索引是爲了加速
表中數據行的檢索
而創建的一種分散存儲的數據結構
- 爲什麼不用平衡二叉樹做索引的數據結構
- 搜索效率低
- 一般來說,在樹的結構中數據所處的深度決定了它的搜索時 IO 的次數
- 二叉樹分路較少,數據量較多時樹的深度就會很深
- 節點數據內容較少
- 沒有很好的利用操作系統和磁盤的數據交換特性和磁盤預讀能力
- 即操作系統:
空間局部性原理
- B+ 樹
- B+ 節點關鍵字搜索採用閉合區間
- B+ 非葉子節點不保存數據相關信息,只保存關鍵字和子節點的引用
- B+ 關鍵字對應的數據保存在葉子節點中
- B+ 葉子節點是順序排列的,並且相鄰的節點具有順序引用關係
- 相對於 B 樹,爲什麼使用 B+ 樹做索引的數據結構
- B+ 樹掃庫掃表能力更強
- 磁盤讀寫能力更強
- 排序能力更強
查詢效率更加穩定
(可能比B樹慢一些)
MyISAM 搜索引擎下的 B+ Tree 索引
InnoDB 搜索引擎下的 B+ Tree 索引