Tengo una tabla SQL con un millón de entradas y traté de consultar cuántas entradas son anteriores a 60 días (Oracle 11.2. 0.1.0).¿Por qué una consulta con una selección secundaria cuesta menos que la consulta con una constante en Oracle
Para este experimento utilicé 3 versiones diferentes de la sentencia de selección:
(El costo-valor viene dado por TOAD para Oracle V. 9.7.2.5)
select count(*) from fman_file
where dateadded >= (select sysdate - 60 from dual)
Coste: 65select count(*) from fman_file
where dateadded >= sysdate - 60
Costo: 1909select count(*) from fman_file
where dateadded >= sysdate - numtodsinterval(60,'day')
Costo: 1884select count(*) from fman_file where dateadded >= '10.10.2009'
Costo: 1823
(El 10.10.2009 es sólo un ejemplo actualizados !!!)
que no tienen el tiempo exacto -valores para todas las consultas en mente, pero el primero realmente fue el más rápido.
Así que probé algunas consultas más selectas con otras subselecciones (como (Seleccionar 1000 desde dual)) y fueron (a veces MÁS) más rápidas que las otras con valores constantes. Incluso parece que este "CUALQUIER COSA" (Error/Característica) está sucediendo en MySQL también.
Entonces, ¿alguien puede decirme por qué la primera consulta es (camino) más rápida que las otras?
Greetz
P.S .: No se trata de la sydate! La pregunta es ¿POR QUÉ LA VARIACIÓN CON (SELECCIONAR) MÁS RÁPIDA QUE LOS DEMÁS? (con un pequeño enfoque en Select-Variation (1.) vs. Constant-Variation (4.))
no se puede decir por qué, pero si Estamos tratando de determinar los recuentos de registros MÁS DE 60 días, ¿no se revoca su operador relacional? – DCookie
Puedo reproducir este efecto también en 10.2.0.2.0, pero la diferencia es mucho más pequeña: 4723 con subselección, 4736 con comparación simple. –
Un "costo" menor no significa necesariamente "más rápido". Aunque podría tener algún valor en una consulta muy simple como la suya, normalmente no puede comparar los valores de costo de una consulta a otra. Su propósito es comparar diferentes * planes * para la misma consulta. –