2012-05-22 6 views
3

У меня есть представление, когда я запрашиваю этот вид, он работает медленно. Однако, если я удаляю функцию NVL, она работает быстро.Запрос выполняется медленно, когда NVL используется в Oracle

Я проверил план выполнения, когда используется функция NVL, он не использует никакого индекса. Если функция NVL не используется, это индекс. Я попытался указать индекс как подсказку, но это не помогло. Не уверен, рассматривается ли подсказка во время выполнения.

Ниже приведено представление и запрос, используемый для создания представления.

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 

Запрос, который я использую на зрения

select * from test where a='XYZ' 

Любые мысли, что я должен сделать, чтобы сделать выше запрос быстро бегать?

+0

любые мысли по этому вопросу? – 09999

+0

Получили ли вы ответ на этот вопрос? – fras85

ответ

1

Не уверен, что вы уже получили ответ на этот вопрос - вам нужно будет использовать функциональный индекс, используя NVL (a). По умолчанию Oracle не будет индексировать нулевые столбцы, поэтому при запросе с использованием NVL он выполнит полное сканирование таблицы.

Смежные вопросы