Tengo una consulta simple, que selecciona las primeras 200 filas ordenadas por una de las columnas filtradas por otra columna indexada. La confusión es la razón es que el plan de consulta en PL/SQL Developer muestra que se utiliza este índice única cuando estoy seleccionando todas las filas, por ejemplo:Índice incorrecto que se utiliza al seleccionar las filas superiores
SELECT * FROM
(
SELECT *
FROM cr_proposalsearch ps
WHERE UPPER(ps.customerpostcode) like 'MK3%'
ORDER BY ps.ProposalNumber DESC
)
WHERE ROWNUM <= 200
Plan de muestra que usa el índice CR_PROPOSALSEARCH_I1, que es un índice en dos columnas: PROPOSALNUMBER & SUPERIOR (CustomerName), esto se lleva a 0.985s a ejecutar:
Si me deshago de la condición ROWNUM, el plan es lo que espero y que se ejecuta en 0.343s :
Dónde index XIF25CR_PROPOSALSEARCH is on CR_PROPOSALSEARCH (UPPER(CUSTOMERPOSTCODE));
¿Por qué?
EDITAR: Me han reunido estadísticas sobre cr_proposalsearch
mesa y dos planes de consulta ahora demostrar que los usan XIF25CR_PROPOSALSEARCH
índice.
dos consultas diferentes, dos conjuntos de resultados diferentes, ¿por qué no debería haber dos planes diferentes explicar? – APC