資料庫索引詳解

2021-09-03 10:20:03 字數 862 閱讀 9997

紊亂的資料庫叫做堆

建立乙個物理索引,使資料基於某乙個鍵聚集在一起。堆和聚集索引是資料頁存在的兩種方式。

堆 堆就好比沒有排序過的資料頁,沒有索引的自然狀態,每個表都是組織在堆中。當表需要更多的資料,他會讓堆擴充套件使之再分配,增加在堆上的頁數。這是非常有效的,這樣,資料庫可以存放資料在任何空當,而不是只能存放在指定的地方。

表資料在堆中,沒有經過排序。當你在乙個堆中的表裡查詢資料,資料引擎必須檢查堆中的每個頁,以此判斷是否滿足查詢,這個讀取表的每個頁面的過程叫做全表掃瞄。大多數表,進行全表掃瞄是非常耗效能的。解決的方法就是使用索引。

索引結構

索引在sqlserver中使用平衡樹(balanced tree),有時被稱作b樹,平衡樹索引形成樹結構,索引的資料在這幾組頁上面(葉子節點)。這種結構叫做平衡樹因為每個葉子到根的距離都是一致的。

有兩種相關的索引使用了平衡樹結構。第一種叫做聚集索引。這種索引呈現了資料表中資料的物理排序次序,每個表只能有乙個聚集索引,第二種叫做非聚集索引,這種索引在每個頁上構建了乙個排序關鍵字,所以他不是直接影響到資料頁的組織方式。因為這個,你可以在表上有多個非聚集索引。

聚集索引的葉節點(最底層的節點)包含了資料頁。

非聚集索引的葉節點(最底層的節點)不包含資料頁,仍然是個索引頁。

看下圖:聚集索引示意圖。根結點和葉節點中間的索引級別統稱中間級。最後的葉節點包含了資料頁。

看下圖,非聚集索引。葉節點仍然是索引頁。並且非聚集索引的排序順序和物理順序無關。當sqlserver到達非聚集索引的底部節點後,他就開始使用聚集索引來搜尋實際的資料行。這就增加了一些io開銷,但是好處是,如果資料行被更改了,非聚集索引行定位仍然不變。

當在非聚集索引上搜尋到最後的葉子節點後,要找的資料頁,仍然使用聚集索引。

資料庫索引詳解

介紹索引前先介紹三個概念 建立索引主要是改善select執行狀況,提公升查詢效率 mysql explain select oracle explain plan for select 舉例如下 explain select from tb emp where ename 張三丰 執行的結果如下 主...

資料庫索引原理詳解

一 使用索引的好處 建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序子句進行資料檢索時,同...

資料庫基礎 索引詳解

閱讀導航 提高效能 索引 b tree 索引 hash 索引 其他型別 指標 索引百利無一害 索引對於接觸過資料庫的人,都不會很陌生,但是說實話,也不一定很熟悉。先來介紹下索引的優點。提高效能 現在有乙個資料庫表 words 有 wordid wordpage wordname wordpronun...