問:
比如說列A,B,C,D都是查詢條件,且可能以任意組合出現,概率也基本相同。這個時候是應該使用複合索引,還是應該爲每個列單獨建立索引?
希望能夠介紹一下選擇這2種方式的原則,謝謝
答:
看看 ABCD 四個列各自的長度.
如果長度太長, 一般不用考慮將它放在複合索引中, 因爲單獨用它的概率還是比較高, 所以可以考慮單獨爲它建立索引
考慮各列的數據的重複情況
如果數據重複非常嚴重(例如, DISTINCT 後只有原來數據的千分之一(這個比較不是固定的, 一般而言, 數據量越大, 這個比較應該越小一些)), 則不太適合爲它建立索引.
組合索引和單獨索引一齊考慮, 例如, A,B兩個列都是int這種小數據類型, 則A+B, B這樣兩個索引可以覆蓋 A,B 單獨檢索及A+B組合搜索三種情況(單獨搜索A時, 可以利用A+B的複合索引)
原地址:http://community.csdn.net/Expert/topic/5581/5581529.xml?temp=.7767145
(作者:鄒建 BLOG :http://blog.csdn.net/zjcxc)