Discuz! Board

 找回密碼
 立即註冊

QQ登入

只需一步,快速開始

搜尋
熱搜: 活動 交友 discuz
檢視: 89|回覆: 0

為了闡明它是如何工作的現在讓我們看一下

[複製連結]

3

主題

3

帖子

11

積分

新手上路

Rank: 1

積分
11
發表於 2025-1-15 17:58:23 | 顯示全部樓層 |閱讀模式



一組數字。例如,根中的第二個條目(18-28)指的是數字18到28之間的所有值。由於我們總共需要儲存6個數字,並且最大儲存容量已設定為三個值​​每張紙都需要建立一個新節點。這個新節點包含兩個條目 (18-23 | 24-28),這兩個條目又引用一系列數字。在此示例中,三個位置中僅佔用了兩個。各個值現在儲存在最低級別(級別 3)。為整棵樹定義的每個節點/葉子三個值的限制也適用於此。

在示例中,根(藍色)和第二個節點(黃色)仍然有一個空閒位置。這意味著尚未達到要儲存的值的最大數量。現在,如果新增值 32 和 36,則會在右側建立一個新工作表。該工作表在節點中建立一個新條目,該節點現在具有三個條目。因此,該樹每個節點限制為三個條目,但在第三層 (33) 可以儲存 27 個條目。如果要儲存的值的數量超過27,則必須建立一個新層。現在第 4 層的樹最多可以儲存 81 個值(34)。


在Oracle資料庫中,節點/塊的大小可以在建立資料庫時指定。我們以8KB的塊大 巴林 whatsapp 資料​ 小為例。現在,如果儲存字串、時間戳或整數等資料的大小為 8 個位元組,則一個塊可以儲存超過 400 個條目。從表中可以看出,這種型別的樹在第 3 層可儲存多達 6400 萬個條目,在第 4 層可儲存多達 250 億個條目。因此,實際上,B 樹的深度通常不超過 4 層。


B 樹索引的變化
B 樹索引的一個關鍵方面是其自我平衡的能力。當底層資料發生變化時,無論是新增新記錄還是刪除現有記錄,樹都會自動重組以保持平衡。這意味著 B 樹的葉節點始終保持在同一級別。這種自動平衡可確保即使資料動態變化時搜尋效能也始終保持在較高水平。但是,應該注意的是,與沒有索引的表相比,定期調整索引可能會導致插入 (INSERT)、更新 (UPDATE) 和刪除 (DELETE) 資料時速度變慢。

為了說明這一點,讓我們再次檢視之前從 0 到 28 索引的數值,並新增值 13、15 和 17。插入這些值需要將樹重組到根。這意味著必須在每個級別調整數字範圍並新增新工作表。下圖顯示了更改後的值以粗體顯示的新結構。


Oracle 中的 B 樹索引
儘管存在潛在的困難,B 樹索引仍然是優化資料庫查詢和提高效能不可或缺的工具。在Oracle中建立B-Tree索引需要執行以下程式碼:CREATE INDEX index_name ON table_name(attribut_name);

還可以跨表的多個屬性建立索引。但是,應該注意的是,指定屬性的順序很重要。如果在 SELECT 語句的過濾操作(WHERE)中也使用了指定的屬性,則只能通過定義的索引來實現效能優化。如果情況並非如此,並且僅過濾了 WHERE 語句中的部分屬性,則查詢優化器將執行全表掃描或可能使用其他較小的索引。這會減慢查詢速度並阻礙預期的效能改進。要在Oracle中從多個屬性建立索引,使用以下程式碼:CREATE INDEX index_name ON table_name(attribut_name_1, attribut_name_2);

最佳實踐
使用 B 樹索引時需要考慮幾個注意事項,以避免查詢速度出現不必要的下降。下面總結了使用 B-Tree 索引的關鍵規則和最佳實踐:

主鍵和外來鍵:為了提高具有一個或多個跨表聯接的查詢的效能,建議為主鍵和外來鍵建立索引。這意味著連線可以更快地執行,並且不必在大表上執行全表掃描。

回覆

使用道具 舉報

您需要登入後才可以回帖 登入 | 立即註冊

本版積分規則

Archiver|手機版|小黑屋|DiscuzX

GMT+8, 2025-4-2 08:12 , Processed in 0.012966 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回復 返回頂部 返回列表