MySQL索引為什麼選擇B 樹而不是B樹

2021-10-03 20:41:42 字數 441 閱讀 9834

b類樹的特點,b類樹保證盡量多的在結點上儲存相關的資訊,同時保證層數盡量的少,查詢更快,磁碟的io操作也少一些。

b+樹的io更少:b+樹的非葉子節點沒有指向關鍵字具體資訊的指標,只用作索引,因此b+樹的非葉子節點比b樹占用更少磁碟空間。當資料量大時,一次不能把整個索引全部載入到記憶體,只能逐個載入每乙個磁碟塊,而關鍵字所佔空間更小可以使得一次性讀入記憶體的索引也就越多,io次數也就越少。

b+樹更擅長範圍查詢:b+樹的葉子節點是按順序放置的雙向鍊錶,更適合mysql的區間查詢。b樹因為其分支結點同樣儲存著資料,需要進行一次中序遍歷按序。

b+樹更擅長遍歷:b+樹只需要去遍歷葉子節點就可以實現整棵樹的遍歷,更適合mysql的掃表操作。b樹則需要進行深度優先遍歷或層序遍歷。(模擬2)

b+樹的查詢效率更加穩定:b+樹葉子節點(資料)都在同一層,查詢操作從根節點到葉子節點經歷的路徑長度相同,所以查詢效率穩定。

MySQL為什麼選擇B 樹做索引

b tree的基本概念 所有的葉子節點的高度都是一樣,這個保證了每次查詢資料的時候都是穩定的查詢效率,不會因為運氣的影響 b tree中其實每個非葉子節點內的小節點內其實都是乙個二元組 key,data key其實就是下圖的那個25這種的,然後這個data其實對應的就是資料庫中id等於25這條完整的...

為什麼Mysql用B 樹做索引而不用B 樹

先從資料結構的角度來答。題主應該知道b 樹和b 樹最重要的乙個區別就是b 樹只有葉節點存放資料,其餘節點用來索引,而b 樹是每個索引節點都會有data域。這就決定了b 樹更適合用來儲存外部資料,也就是所謂的磁碟資料。從mysql inoodb 的角度來看,b 樹是用來充當索引的,一般來說索引非常大,...

資料庫索引為什麼使用B 樹?

b tree 二叉樹 binary tree 每個節點只能儲存乙個數。b tree b樹 b tree,並不是b 減 樹,橫槓為連線符,容易被誤導 b樹屬於多叉樹又名平衡多路查詢樹。每個節點可以多個數 由磁碟大小決定 b tree和b tree都是 b tree的變種 一般來說,索引本身也很大,不可...