MySQL為什麼採用B+樹作為索引結構?

孤勇者發表於2024-03-24

1、B+ 樹的非葉子節點不存放實際的記錄資料,僅存放索引,因此資料量相同的情況下,相比儲存即存索引又存記錄的 B 樹,B+樹的非葉子節點可以存放更多的索引,因此 B+ 樹可以比 B 樹更「矮胖」,查詢底層節點的磁碟 I/O次數會更少。

2、B+ 樹有大量的冗餘節點(所有非葉子節點都是冗餘索引),這些冗餘索引讓 B+ 樹在插入、刪除的效率都更高,比如刪除根節點的時候,不會像 B 樹那樣會發生複雜的樹的變化;

3、B+ 樹葉子節點之間用連結串列連線了起來,有利於範圍查詢,而 B 樹要實現範圍查詢,因此只能透過樹的遍歷來完成範圍查詢,這會涉及多個節點的磁碟 I/O 操作,範圍查詢效率不如 B+ 樹。

相關文章