資料庫索引底層為什麼採用B 樹

2021-10-25 07:06:07 字數 622 閱讀 6300

需求:

從查詢角度考慮,資料庫查詢一般有單值查詢和範圍快速查詢的需求。

比如:根據某個具體的值快速查詢,select * from users where id=999;

查詢某個範圍的資料:select * from users where id>100 and id<200;

除此之外,儲存空間方面也希望不要消耗太多空間。

對於常用的資料結構來說,雜湊表支援快速查詢某個具體的值,時間複雜度o(1),但是雜湊表不支援範圍快速查詢;

二叉查詢樹查詢某個具體的值的時間複雜度可以達到o(logn),但是也不支援範圍查詢;有序鍊錶支援範圍查詢,但查詢效率較低。

b+樹是一種多叉樹,在二叉查詢樹的基礎上改進的一種資料結構;

對於m叉樹來說,每個節點的孩子節點不超過m,也不能小於m/2;

b+樹的非葉子節點只儲存索引,是有序的,葉子節點儲存的是真正的資料;

通過雙向鍊錶將葉子節點串聯起來,也是有序的,便於按區間快速查詢;

通常情況下,根節點儲存在記憶體中,其他節點儲存在磁碟中,有效降低了記憶體消耗;

每個節點的讀取(或者訪問),都對應一次磁碟io操作。樹的高度就等於每次查詢資料時磁碟io操作的次數,所以說要盡可能降低書的高度,採用多叉樹也是w為了降低樹的高度。

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

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

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

首先,紅黑樹乙個節點存乙個索引,雖然能提公升查詢的效率,但是o log2 n 的優化有限,對於大量資料而言,樹高決定了io的次數還是比較多 b 樹相比b樹,非葉子節點只存索引和下一節點指標,而少了關鍵字具體資訊的指標,所以節點比較小。在一次io操作下,讀取到的資料塊中,索引key更多,相對來說,進行...

資料庫索引採用B樹和B 樹的原因

我們以丟擲問題的形式開始講解 1 資料庫檔案儲存的方式 2 從資料庫讀取資料的原理 3 減少磁碟io操作的影響因素 4 基於磁碟io預讀機制,索引可以快速查詢資料 a 什麼是索引 b 為什麼要使用索引 5 資料庫中使用什麼資料結構作為索引 a 鍊錶 b 陣列 c 平衡二叉樹 d b樹和b 樹 6 採...