2012-05-22 81 views
3

使用我有一個觀點,當我查詢這種觀點它運行緩慢運行速度慢。但是,如果我刪除NVL功能,它運行速度很快。查詢時NVL在甲骨文

我已經檢查執行計劃,當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基於功能指數(一)。默認情況下,Oracle將不會指數空列,所以當你查詢中使用NVL,將執行全表掃描。