B-Tree索引
一.概念
B-Tree(多路搜索樹,並不是二叉的),是一種常見的數據結構.使用B-Tree結構可以顯著減少定位記錄時所經歷的中間過程,從而加快存取速度.這個數據結構一般用於數據庫的索引,綜合效率較高.
二.二叉樹和平衡二叉樹
瞭解二叉樹和平衡二叉樹
引用: B-Tree和B+Tree詳解
https://blog.csdn.net/Hubery_James/article/details/80565137
引用:快速理解平衡二叉樹、B-tree、B+tree、B*tree
https://blog.csdn.net/jacke121/article/details/78268602
三.B-Tree索引的查詢類型
B-Tree索引適用於全鍵值,鍵值範圍或者鍵前綴查找(只適用於根據最做前綴的查找)
1.全值匹配
是和索引中的所有列進行匹配
2.匹配最左前綴
只使用索引的第一列
3.匹配列前綴
也可以匹配某一列的值的開頭部分
4.匹配範圍值
匹配某一範圍的區間
5.精確匹配某一列並範圍匹配另外一列
一列全部匹配,一列範圍匹配
6.只訪問索引的查詢
查詢值需要訪問索引,而無需訪問數據行
因爲索引樹種的節點是有序的,所以除了按值查找,也可以按照順序查找,如果B-Tree可以按照某種方式查找到值,也可以按照這種方式用於排序
四.B-Tree索引的限制
1.只能匹配最左前綴
如果是匹配第一列之後的其他列進行查找,則無法使用索引
2.不能跳過索引中的列
不用使用第一列和第三列的索引取查找,而缺少了第二列
3.範圍查找右邊的列都不能使用索引
如果某個查詢有個列查詢範圍,則其右邊所有列都無法使用索引優化查找
-- 示例 索引列爲a.b.c
select * from test where a = 'a' and b like '%b%' and c = 'd'
-- 則只能 a b 列使用索引,c列不能使用索引
因爲索引列的順序很重要,這些限制都和索引列的順序有關