2012-10-08 31 views
0

這是我第一次嘗試在oracle中使用基於函數的索引。但我不知道如何實現它。我在網上搜索了一下,找到了一個簡單的例子,使用UPPER函數索引等與SQL相關。雖然,我發現很多解釋什麼是基於函數的索引,但沒有解釋在複雜SQL情況下如何工作。我有以下SQL與子選擇,並有真正的性能問題,當我做了一些搜索,以改善它,然後我發現有一些稱爲基於功能的索引。但是現在我不知道如何使用它,它會如何提高性能。 這是SQL。你能有人幫助我如何實現基於函數的索引這個SQL(如果有的話是可以的。)如何使用基於函數的索引

INSERT INTO TABLE1(K_ID, KKID, K_SEGMENTS, COL1, COL2, COL3, COL4, COL5, COL6, COL7 , COL8,COL9, COL10) 
SELECT DISTINCT K_ID , KKID , K_SEGMENTS , COL1 , COL2 , COL3 , COL4 , COL5 , COL6 , COL7 
, COL8 , COL9 , COL10 
FROM TABLE2 A 
, TABLE3 P 
WHERE P.KEY1 = A.KEY1 
AND NOT EXISTS ( 
SELECT 1 
    FROM TABLE1 B 
    WHERE 1=1 
    AND A.K_ID = B.K_ID 
    AND A.K_SEGMENTS = B.K_SEGMENTS) 

回答

0

查詢使用沒有「功能」(例如頂)可能由基於函數的得到幫助指數。您在TABLE1上的子查詢與K_IDK_SEGMENTS相關,所以如果我確信性能問題與此子查詢有關,我會考慮在這兩列中添加一個普通索引(即不是FB索引)。

如果您只是需要改進查詢的性能,我會首先看解釋計劃。

相關問題