因為我們要考慮磁碟io的影響,它相對於記憶體來說是很慢的。資料庫索引是儲存在磁碟上的,當資料量大時,就不能把整個索引全部載入到記憶體了,只能逐一載入每乙個磁碟頁(對應索引樹的節點)。所以我們要減少io次數,對於樹來說,io次數就是樹的高度,而「矮胖」就是b樹的特徵之一,它的每個節點最多包含m個孩子,m稱為b樹的階,m的大小取決於磁碟頁的大小
另乙個名字就是二叉樹索引。
1.每個節點的兒子節點都是兩個,左邊是比該節點小的,右邊是比該節點大的,這兩個索引的兒子節點同樣是這種情況
2.所有的節點都是乙個關鍵字
搜尋的時候是從根節點開始搜尋的。
比如搜尋的是35,則直接命中。如果搜尋「28「,那就是比35小,左邊節點,「17」,「28」比「17」大,則右邊節點,直到命中
我們把所有的資料進行折半塊查詢,比如一共100條資料。在30和60的地方分一下,存放30和60的節點就是根節點。30和60就是該節點的關鍵字,100也就是分成了3份,這個節點自動建立三個指標。這三份就是根節點的子節點,(敲黑板劃重點,子節點的個數=關鍵字個數+1,沒有子節點就不說了)。下面繼續分,拿其中乙個子節點舉例,把30分成3分,10和20當成關鍵字,下面繼續是三個子節點。。。依次類推
在每乙個葉子節點做乙個標記,把這些標記存起來,每次查的時候可以在查詢根節點的時候從葉子節點也開始查,這樣是不是就省了好多時間呢。
而這些標記就是鏈指標。把這些鏈指標存進一張表中,這個表就是稠密索引.
B樹,B 樹和B 樹 B 樹的區別
之前一些概念混淆,現在更正一下。b樹 b tree樹即b樹,b即balanced,平衡的意思。因為b樹的原英文名稱為b tree,而國內很多人喜歡把b tree譯作b 樹,其實,這種直譯不好,容易產生誤解。如人們可能會以為b 樹是一種樹,而b樹又是一種樹。事實上,b tree就是指b樹。特此說明。先...
B樹,B 樹和B 樹的區別
b樹 即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進...
B樹,B 樹和B 樹的區別
即二叉搜尋樹 1.所有非葉子結點至多擁有兩個兒子 left和right 2.所有結點儲存乙個關鍵字 3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹 如 b樹的搜尋,從根結點開始,如果查詢的關鍵字與結點的關鍵字相等,那麼就命中 否則,如果查詢關鍵字比結點關鍵字小,就進入左兒...