[MySQL] 聯合索引最左前綴原則的原因


聯合索引有個最左前綴原則 , 這個原則的原因是這樣的

比如有個聯合索引 (b,c,d)

 

在索引的排序上 , 是先按b排序 ,  再按c排序 ,  再按d排序

比如有如下數據:

 

 

a 是主鍵 ,  b c d創建了聯合索引

生成的索引結構為:

 

 看最后的葉子節點數據的排序  , 先按第一行b 排序 ,  再按第二行 c 排序 , 最后按第三行 d排序 , 紫色部分是主鍵

 

查詢的時候 , 先按a字段的查詢  a相同的再按b的查詢 b也相同的再按c的查詢

這樣的索引構建方式及存儲結構,所以聯合索引只能從多列索引的第一列開始查找。所以如果你的查找條件不包含b列如(c,d)、(c)、(d)是無法應用索引的,以及跨列也是無法完全用到索引如(b,d),只會用到b列索引。

 


免責聲明!

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



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