La consulta se ejecuta lentamente cuando se usa NVL en Oracle

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?

preguntado el 22 de mayo de 12 a las 19:05

¿Recibiste una respuesta a esto? -

1 Respuestas

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 or haz tu propia pregunta.