2011-12-06 86 views
2

我有一個表的幾列索引。如果我沒有提及where條款中的所有列,那麼是否會使用該索引?Oracle索引使用

回答

7

答案是:這取決於。

實際上,這很大程度上取決於許多統計因素,這些因素通常是在創建索引時或通過計劃作業收集的。統計數據包括數據的基數(您有多少行),其方差,分佈,某些值是否過度表示,是否有許多不同的值。

通常可以在索引順序中的第一個列被過濾時使用索引。但是,如果第一列的基數足夠低,則Oracle優化器可以使用SKIP SCAN方法遍歷第二列的所有值。

我建議您閱讀Oracle概念指南的section on indexes。 Tom Kyte建議整個指南說當你想知道Oracle RDBMS是什麼時,這是最重要的閱讀材料。