为什么重复值高的字段不能建索引(比如性别字段等)
生活随笔
收集整理的這篇文章主要介紹了
为什么重复值高的字段不能建索引(比如性别字段等)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
結(jié)論(以innodb為例)
a、非聚簇索引存儲了對主鍵的引用,如果select字段不在非聚簇索引內(nèi),就需要跳到主鍵索引(上圖中從右邊的索引樹跳到左邊的索引樹),再獲取select字段值
b、如果非聚簇索引值重復(fù)率高,那么查詢時就會大量出現(xiàn)上圖中從右邊跳到左邊的情況,導(dǎo)致整個流程很慢
c、如果where值重復(fù)率高的字段,select用了limit,只查較少數(shù)據(jù),也就是跳的次數(shù)很少的情況下,還是可以建索引的(后來想想也沒必要,limit限制了數(shù)量,全表掃描也很快,除非字段值是排序的,必須掃描完前面的所有值)
d、如果沒有3這個前提,則不建議在值重復(fù)率高的字段上建索引,因?yàn)椴樵冃实?#xff0c;還需要維護(hù)索引
總結(jié)
以上是生活随笔為你收集整理的为什么重复值高的字段不能建索引(比如性别字段等)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。