索引是一種用於快速查詢行的數據結構,存儲引擎使用索引也是,先在索引中找到對應的值,然後根據匹配的索引記錄找到對應的行。
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樹則需要做中序遍歷)