Hay una variedad de posibilidades. Podría estar filtrando un gran número de filas con fechas inválidas/nulas en pub_time, pero dudo que omita advertir/mencionar un número significativo de estas.
Las tres cosas que se pegan en mi mente son:
- Usted tiene un índice o un índice compuesto que implica pub_time, y la restricción en su cláusula where está provocando el uso de una ruta de acceso diferente
- No tenía estadísticas disponibles para el optimizador cuando ejecutó su primera consulta. Al ejecutar la segunda consulta, se seleccionó una mejor ruta de acceso gracias al almacenamiento en memoria caché de información que se realizó al ejecutar la primera consulta. Esto puede verificarse ejecutando la primera consulta unas cuantas veces más y viendo si hay una mejora significativa en el rendimiento.
- Al igual que en el primer punto, el optimizador podría simplemente seleccionar una mejor ruta de acceso basándose únicamente en las implicaciones de la cláusula where. Tal vez dar la indicación de que los valores nulos/inválidos no tendrán que ser manejados es suficiente: su sistema podría estar evitando uno o más escaneos de tablas completas para eliminar las nulidades/null pub_times.
Identificar las razones de este tipo de cosas se está convirtiendo rápidamente en una aventura empírica. Es difícil para mí decir más sin conocer su plataforma &. A partir de la etiqueta, entiendo que estás usando Oracle, en cuyo caso deberías poder usar alguna forma de herramienta de "explicación de consulta" o "explicar plan" para tener una mejor idea de lo que está sucediendo. Para obtener más información sobre el optimizador de Oracle ver http://docs.oracle.com/cd/B10500_01/server.920/a96533/optimops.htm (Esto es para Oracle 9i v9.2, pero tiene una explicación decente de los conceptos independientes de la versión)
¿Hay un índice en la columna 'pub_time'? – Ollie
Solo una conjetura, pero ¿podría t.pub_time alguna vez ser NULL? – markblandford
aparentemente su cláusula Where filtra muchos registros, ¿por qué? 'null' values, o simplemente entradas con valores de tiempo defectuosos antes del 01.01.1900 – ntziolis