資料庫的索引

2021-08-07 12:09:52 字數 1232 閱讀 4865

3 b樹索引與b樹索引

資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢、更新資料庫表中資料。索引的實現通常使用b樹及其變種b+樹。

1.建立唯一性索引,保證資料庫表中每一行資料的唯一性 

2.大大加快資料的檢索速度,這也是建立索引的最主要的原因 

3.加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。 

4.在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。 

5.通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的效能。

1.建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加 

2.索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大 

3.當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度

b樹定義:一棵m 階的b-樹,或者為空樹,或為滿足下列特性的m 叉樹: 

⑴樹中每個結點至多有m 棵子樹; 

⑵若根結點不是葉子結點,則至少有兩棵子樹; 

⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹; 

(4)從根節點到葉節點每一條路徑都有同樣的長度,即葉節點在同一層次上;

b+樹定義:一棵m 階的b-樹,或者為空樹,或為滿足下列特性的m 叉樹: 

⑴樹中每個結點至多有m 棵子樹; 

⑵若根結點不是葉子結點,則至少有兩棵子樹; 

⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹; 

(4)從根節點到葉節點每一條路徑都有同樣的長度,即葉節點在同一層次上; 

(5)所有的非終端結點可以看成是索引部分,結點中僅含其子樹(根結點)中的最大(或最小)關鍵字。

1. b+樹空間利用率更高,可減少i/o次數

一般來說,索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存的磁碟上。這樣的話,索引查詢過程中就要產生磁碟i/o消耗。而因為b+樹的內部節點只是作為索引使用,而不像b-樹那樣每個節點都需要儲存硬碟指標。 

2. 增刪檔案(節點)時,效率更高

因為b+樹的葉子節點包含所有關鍵字,並以有序的鍊錶結構儲存,這樣可很好提高增刪效率。
3. b+樹的查詢效率更加穩定

因為b+樹的每次查詢過程中,都需要遍歷從根節點到葉子節點的某條路徑。所有關鍵字的查詢路徑長度相同,導致每一次查詢的效率相當。

資料庫 資料庫索引

索引是儲存引擎用於快速找到記錄的一種資料結構。索引以檔案的形式儲存在磁碟中。索引可以包含乙個或多個列的值。儲存引擎查詢資料的時候,先在索引中找對應值,然後根據匹配的索引記錄找到對應的資料行。1.b tree索引 2.雜湊索引 myisam和innodb儲存引擎 只支援btree索引,也就是說預設使用...

資料庫mysql索引 資料庫 mysql索引

mysql 索引 mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可...

資料庫的索引

索引 使用索引可快速訪問資料庫表中的特定資訊。索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓 lname 列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資訊。索引提供指向儲存在表的指定列中的資料值的指標,然後根據您指定的排序順序對...