如圖所示,區別有以下兩點:
1. B+樹中只有葉子節點會帶有指向記錄的指針(ROWID),而B樹則所有節點都帶有,在內部節點出現的索引項不會再出現在葉子節點中。
2. B+樹中所有葉子節點都是通過指針連接在一起,而B樹不會。
B樹的原理:
就是為了存儲設備或者磁盤設計的一種平衡查找樹;通過對樹高度的降低可以提升查找效率,尤其是在大量數據進行存儲的時候會存儲到外部磁盤,通過對外部磁盤的讀取時需要快速的查找到對應的位置,所以需要一種高效的外村數據結構。
B樹的優點:
對於在內部節點的數據,可直接得到,不必根據葉子節點來定位。
B+樹的原理:
B+樹是B樹的一種變形,它把數據都存儲在葉子節點,內部只存關鍵字(其中葉子節點的最小值作為索引)和孩子指針,簡化了內部節點;B+樹的遍歷高效,將所以葉子節點串聯成鏈表即可從頭到尾遍歷,
B+樹的優點:
1. 非葉子節點不會帶上ROWID,這樣,一個塊中可以容納更多的索引項,一是可以降低樹的高度。二是一個內部節點可以定位更多的葉子節點。
2. 葉子節點之間通過指針來連接,范圍掃描將十分簡單,而對於B樹來說,則需要在葉子節點和內部節點不停的往返移動。
為什么B+樹比B樹更適合做系統的數據庫索引和文件索引
1)B+樹的磁盤讀寫代價更低
因為B+樹內部結點沒有指向關鍵字具體信息的指針,內部結點相對B樹小
2)B+樹的查詢更加穩定
因為非終端結點並不是指向文件內容的結點,僅僅是作為葉子結點的關鍵字索引,因此所有的關鍵字查詢都會走一條從根節點到葉子結點的路徑。即s所有關鍵字查詢的長度是一樣的,查詢效率穩定。