mysql索引之最左前綴法則


1:最左前綴法則

  如果你的索引有多個字段,如圖1所示,索引字段有 kq_time, card_no, kq_type這三個字段(最左前綴就是按這三個字段的前后順序進行排序的)

 

 

 

 如果是三個查詢條件中三個字段都用到了,如圖二(嚴格按照最左前綴原則,查詢條件順序是使用了三個字段(kq_time,card_no,kq_type)

 

 

 這是圖二是使用了全部索引,三個字段的索引都用到了,key_len的長度是165,看圖三每個字段對應的長度,kq_time的類型是datetime長度是8,card_no的類型是varchar長度是50,kq_type的類型是varchar長度是1,所有總長度是8+(50*3+2)+(1*3+2)=165(這個值是預估值,有時候不准確,下面就會出現此情況),所以所有的索引都走了,索引長度計算看圖三

 

 

 

 

 

下面的圖四,遵守了最左前綴原則,都走了部分索引kq_time(遵守了最左前段法則,查詢條件順序kq_time)

 

 

 再看圖五,走了部分索引kq_time和card_no(遵守了最左前段法則,查詢條件順序kq_time和card_no)

 

 

 

 

圖六 (沒有遵守最左前綴原則,查詢條件跳過kq_time字段,使用了后面的兩個字段,所有不走索引)

 

 

圖七(遵守了最左前綴原則,kq_time有了,后面沒有card_no,直接使用了kq_type,所有索引只走了kq_time)

 

 

 

 在最后,總結一下什么最左前綴原則:查詢從索引的最左前列開始並且不跳過索引中的列,通俗易懂的來說就是:帶頭大哥不能死、中間兄弟不能斷

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM