復合索引底層實現


比如mysql 單列索引是將該列數據當做關鍵字構建一顆b+tree,但是組合索引是如何實現的呢?比如兩個字段的組合索引,SELECT * FROM TABLE1 WHERE A=22 AND b=33 ; 是要建兩棵樹嗎?如果只建立一顆樹,那b列是如何存放的?

 

一棵樹  

如果是單列,就按這列數據進行排序

如果是多列,就按多列數據排序,首先根據第一列排序,在第一列一樣的情況下,第二列再排序。例如有(1,1) (2,2) (2,1) (1,2)

那在索引中的葉子節點的數據順序就是(1,1)(1,2)(2,1)(2,2)

這也是為什么查詢復合索引的前綴是可以用到索引的原因(最左前綴原則)

 

 

 

https://bbs.csdn.net/topics/390985501

 


免責聲明!

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



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