oracle 效能優化操作七:索引提高資料分佈不均勻時查詢效率
阿新 • • 發佈:2018-12-12
索引的選擇性低,但資料的分佈差異很大時,仍然可以利用索引提高效率。 A、資料分佈不均勻的特殊情況下,選擇性不高的索引也要建立。 表ServiceInfo中資料量很大,假設有一百萬行,其中有一個欄位DisposalCourseFlag,取範圍為列舉:[0,1,2,3,4,5,6,7
索引的選擇性低,但資料的值分佈差異很大時,仍然可以利用索引提高效率。
A、資料分佈不均勻的特殊情況下,選擇性不高的索引也要建立。
表ServiceInfo中資料量很大,假設有一百萬行,其中有一個欄位DisposalCourseFlag,取值範圍為列舉值:[0,1,2,3,4,5,6,7]。
按照前面說的索引建立的規則,“選擇性不高的欄位不應該建立索引”,
該欄位只有8種取值,索引值的重複率很高,索引選擇性明顯很低,因此不建索引。
然而,由於該欄位上資料值的分佈情況非常特殊,具體如下表:
取值範圍 佔總資料量的百分比 1~5 1% 6 98% 7 1%
而且,常用的查詢中,查詢DisposalCourseFlag<6 的情況既多又頻繁,毫無疑問,如果能夠建立索引,並且被應用,
那麼將大大提高這種情況的查詢效率。因此,我們需要在該欄位上建立索引。