我在Oracle中建立索引時遇到問題。將試圖用一個實例來解釋我的問題,如下所示。錯誤索引由Oracle選擇
我與列A,B,C,d 表TABLE1另一個表TABLE2與列A,B,C,E,F,H
我已經創建指標的TABLE1
IX_1 A
IX_2 A,B
IX_3 A,C
IX_4 A,B,C
當我給
爲TABLE1
IY_1 A,B,C
IY_2 A
我已經創建了索引的查詢與此類似
SELECT * FROM TABLE1 T1,TABLE2 T2
WHERE T1.A=T2.A
當我給的解釋計劃我得到了它沒有得到IX_1也不IY_2
其採取IX_4也不IY_1
這是爲什麼不選擇正確的指數?
編輯:
誰能幫我知道索引範圍掃描之間的差異,INDEX UNIQUE SCAN,索引跳躍式掃描
我想,當一列在綜合指數由Oracle
跳過跳躍式掃描指別人怎麼樣我沒有主意!
當涉及到使用索引時,不存在_right_或_wrong_。根據成本計算,Oracle選擇最優化的執行計劃。你最近是否更新過數據庫統計信息?此外,我不明白你爲什麼有這麼多的索引。如果使用IX_4和IY_2,那麼所有可能受益於IX_1,IX_2或IY_2的查詢都可以以非常相似的成本和執行計劃執行。 – Codo
謝謝科多。我沒有創建這些索引。我們正在JAROSODS數據庫上實施。他們有充足的索引。我試圖模仿我的問題。另外我沒有訪問權限來更改這些索引。只是爲了使用它們 – shanmugamgsn
@Codo >>你的意思是說我們不能手動改變成本計算?你在這裏的數據庫統計數據是什麼意思? – shanmugamgsn