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