首先注意:B樹就是B-樹,"-"是個連字符號,不是減號。也就是B-樹其實就是B樹
B-樹是一種平衡的多路查找(又稱排序)樹,在文件系統中有所應用。主要用作文件的索引。其中的B就表示平衡(Balance)
B+樹是對B樹的一種升級, B樹每個節點都存儲data, 而B+樹只在葉子節點存儲data,B+降低了樹的深度,將“瘦高”的樹變得“矮胖:
實現方法:
(1)、每個節點存儲多個元素
(2)、摒棄二叉樹結構,采用多叉樹
B樹:

B+樹:

B+樹有更高的查找效率
1. B+樹中間節點沒有衛星數據,只有索引,而B樹每個結點中的每個關鍵字都有衛星數據;這就意味着同樣的大小的磁盤頁可以容納更多節點元素,在相同的數據量下,B+樹更加“矮胖”,IO操作更少
2、其次,因為衛星數據的不同,導致查詢過程也不同;B樹的查找只需找到匹配元素即可,最好情況下查找到根節點,最壞情況下查找到葉子結點,所說性能很不穩定,而B+樹每次必須查找到葉子結點,性能穩定
3、在范圍查詢方面,B+樹的優勢更加明顯
B樹的范圍查找需要不斷依賴中序遍歷。首先二分查找到范圍下限,在不斷通過中序遍歷,知道查找到范圍的上限即可。整個過程比較耗時。
而B+樹的范圍查找則簡單了許多。首先通過二分查找,找到范圍下限,然后同過葉子結點的鏈表順序遍歷,直至找到上限即可,整個過程簡單許多,效率也比較高。
小結:
B+樹相比B樹的優勢:
1.單一節點存儲更多的元素,使得查詢的IO次數更少;
2.所有查詢都要查找到葉子節點,查詢性能穩定;
3.所有葉子節點形成有序鏈表,便於范圍查詢。
