比如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