mysql索引,B樹和B+樹

索引是一種用於快速查詢行的數據結構,存儲引擎使用索引也是,先在索引中找到對應的值,然後根據匹配的索引記錄找到對應的行。

B樹和B+樹
  • B樹
    大多數存儲引擎都支持B樹索引,b樹通常意味着所有值都是按順序存儲的,並且每一個葉子到根的距離相同,因爲存儲引擎不再需要進行全表掃描來獲取數據。
  • B+樹
    B+樹是B樹的升級版
  • B+樹和B樹的區別:
    1、 B樹的節點沒有重複元素(採用二分法則,左小右大,左邊放小於當前節點值的子節點,右邊放大於當前節點值的子節點),B+樹的節點有重複元素。
    2、 B樹的中間節點會存儲數據指針信息,而B+樹只有葉子節點才存儲
    3、 B+樹的每個葉子節點有一個指針指向下一個節點,把所有的葉子節點串在了一起。
    4、 B+樹每個父節點的元素都會出現在子節點中,是子節點的最大或最小元素,葉子節點存儲了被索引列的所有的數據。
B+樹比起B樹的優點
  • 由於中間節點不存指針,同樣大小的磁盤頁可以容納更多的節點元素,樹的高度就小。(數據量相同的情況下,B+樹比B樹更加“矮胖”),查找起來就更加快速。
  • B樹可以在非葉子節點上獲取數據,而B+樹每次查找都必須到葉子節點才能獲取數據,所以B+樹查找的時間更穩定。
  • B+樹的每一個葉子節點都有指向下一個葉子節點的指針,方便範圍查詢和全表查詢。(只需要從第一個葉子節點開始順着指針一直掃描下去即可,而B樹則需要做中序遍歷)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章