La consulta se ejecuta lentamente cuando se usa NVL en Oracle
Frecuentes
Visto 2,935 veces
3
Tengo una vista cuando consulto esta vista, se ejecuta lentamente. Sin embargo, si elimino la función NVL, se está ejecutando rápidamente.
He comprobado el plan de ejecución, cuando se usa la función NVL, no está usando ningún índice. Si la función NVL no se usa, es index. Traté de especificar el índice como pista, pero no sirvió de nada. No estoy seguro de si la sugerencia se considera o no durante la ejecución.
A continuación se muestra la vista y la consulta utilizada para crear la vista.
CREATE OR REPLACE FORCE VIEW "test"(a,b)
select NVL(table1.a,table2.a) a,table2.b from table1 join table2 on table1.id=table2.id
La consulta que estoy usando a la vista es
select * from test where a='XYZ'
¿Alguna idea de qué debo hacer para que la consulta anterior se ejecute rápidamente?
1 Respuestas
1
No estoy seguro si ya obtuvo una respuesta a esto: necesitaría usar un índice basado en funciones usando NVL (a). De forma predeterminada, Oracle no indexará columnas nulas, por lo que cuando realice una consulta con NVL, realizará un análisis completo de la tabla.
Respondido 29 Oct 12, 12:10
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas oracle10g or haz tu propia pregunta.
¿Recibiste una respuesta a esto? - fras