2
,如果我做Oracle索引加入
select *
from table1
where table1.col1 = 'xx'
and table1.col2 = 'yy'
and table1.col3= 'zz'`
的執行計劃顯示全表掃描。 此表上的索引針對col4和col5存在。 我是否需要在每個col1,col2,col3上設置索引以使查詢性能更好?
此外,如果查詢是這樣的:
select *
from table1,table2
where table1.col1=table2.col2
and table1.col2 = 'yy'
and table1.col3= 'zz'
如果我們創建col1和col2上的指標,就足夠了?
謝謝。你提到'不知道更多關於數據'我可以在所有列創建索引之前檢查什麼? – Victor 2011-03-09 22:50:07
@Kaushik:重要的是指數的選擇性。數據庫通常更喜歡使用最具選擇性的索引。找出哪個索引更好的一個簡單方法是添加您認爲可能使用的所有索引,然後查看查詢計劃以查看其中哪些實際使用。然後,如果您不需要它們,您可以再次刪除其他索引。顯然,如果你有一個表格中包含合理數量的測試數據,那麼效果會更好 - 如果表格幾乎是空的,索引將不會被使用,如果你有數十億行索引創建將需要很長時間。 – 2011-03-09 22:52:29