數(shù)據(jù)庫的引擎為什么采用的是B+樹而不是B-樹

關(guān)于這個話題是一個老生常談的問題了,但是有時候好多人總是傻傻搞不明白

首先我們來總結(jié)一下b樹和B+樹的主要區(qū)別,關(guān)于這兩個的基本定義,其實(shí)我也說不太明白,畢竟好長時間沒有實(shí)際做過這些了,但是一些主要的區(qū)別我們還是必須要清楚的。
首先B樹和B+樹,都有節(jié)點(diǎn)和指針,也就是書上定義的Ki和Pi,原諒寫的不夠標(biāo)準(zhǔn),不怎么熟悉Markdown的語法;下面我們就主要來說說兩者的主要區(qū)別:
首先來看看B樹和B+樹的圖片,圖片來自網(wǎng)絡(luò):

B-樹.jpeg

B-樹的主要特征是Pi比Ki要多一個,另外非葉子結(jié)點(diǎn)的指針: P[1], P[2], …, P[M];其中 P[1]指向關(guān)鍵字小于 K[1]的子樹, P[M]指向關(guān)鍵字大于 K[M-1]的子樹,其它 P[i]指向關(guān)鍵字屬于 (K[i-1], K[i])的子樹,注意為開區(qū)間。

B+樹.jpeg

而B+樹的主要特征是k的個數(shù)等于p的個數(shù),且非葉子結(jié)點(diǎn)的子樹指針 P[i],指向關(guān)鍵字值屬于 [K[i], K[i+1])的子樹,注意為閉區(qū)間。

根本原因:b樹會在各個葉子節(jié)點(diǎn)存儲數(shù)據(jù),而b+樹只有在葉子節(jié)點(diǎn)會存儲數(shù)據(jù),在同樣高度的樹的請開給你下,B+樹會存儲更多的索引,且查找速度更快。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • B樹的定義 一棵m階的B樹滿足下列條件: 樹中每個結(jié)點(diǎn)至多有m個孩子。 除根結(jié)點(diǎn)和葉子結(jié)點(diǎn)外,其它每個結(jié)點(diǎn)至少有m...
    文檔隨手記閱讀 13,355評論 0 25
  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊(duì)列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,489評論 1 31
  • 原文鏈接 B樹 1.前言: 動態(tài)查找樹主要有:二叉查找樹(Binary Search Tree),平衡二叉查找樹(...
    非典型程序員閱讀 1,188評論 0 3
  • B樹 1.前言: 動態(tài)查找樹主要有:二叉查找樹(Binary Search Tree),平衡二叉查找樹(Balan...
    鐵甲依然在_978f閱讀 1,465評論 0 4
  • 嗨,大家好,我是小寶,首先要祝福大家中秋節(jié)快樂,全家幸福美滿! 今天的顧客會得到什么禮物呢? 下面隆重介紹聚米婧氏...
    郭曉寶閱讀 243評論 0 0