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