[數據庫]索引

1 索引定義

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

2 索引優缺點

索引優點

1.創建唯一性索引,保證數據庫表中每一行數據的唯一性
2.大大加快數據的檢索速度,這也是創建索引的最主要的原因
3.加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。
4.在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。
5.通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的性能。

索引缺點

1.創建索引和維護索引要耗費時間,這種時間隨着數據量的增加而增加
2.索引需要佔物理空間,除了數據表佔數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大
3.當對錶中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度

3 B+樹索引與B樹索引

定義

B樹
定義:一棵m 階的B-樹,或者爲空樹,或爲滿足下列特性的m 叉樹:
⑴樹中每個結點至多有m 棵子樹;
⑵若根結點不是葉子結點,則至少有兩棵子樹;
⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹;
(4)從根節點到葉節點每一條路徑都有同樣的長度,即葉節點在同一層次上;

B+樹
定義:一棵m 階的B-樹,或者爲空樹,或爲滿足下列特性的m 叉樹:
⑴樹中每個結點至多有m 棵子樹;
⑵若根結點不是葉子結點,則至少有兩棵子樹;
⑶除根結點之外的所有非終端結點至少有[m/2] 棵子樹;
(4)從根節點到葉節點每一條路徑都有同樣的長度,即葉節點在同一層次上;
(5)所有的非終端結點可以看成是索引部分,結點中僅含其子樹(根結點)中的最大(或最小)關鍵字。

B+樹更適合做索引

1. B+樹空間利用率更高,可減少I/O次數

一般來說,索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲的磁盤上。這樣的話,索引查找過程中就要產生磁盤I/O消耗。而因爲B+樹的內部節點只是作爲索引使用,而不像B-樹那樣每個節點都需要存儲硬盤指針。
2. 增刪文件(節點)時,效率更高

因爲B+樹的葉子節點包含所有關鍵字,並以有序的鏈表結構存儲,這樣可很好提高增刪效率。

3. B+樹的查詢效率更加穩定

因爲B+樹的每次查詢過程中,都需要遍歷從根節點到葉子節點的某條路徑。所有關鍵字的查詢路徑長度相同,導致每一次查詢的效率相當。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章