聚集索引和覆蓋索引

聚集索引和覆蓋索引

  • 索引

    表的數據量比較大時,查詢操作會很耗時。建立索引是加快查詢速度的有效手段。

    數據庫索引就類似於書籤,可以快速定位到要查詢的內容。數據庫索引類型

    順序文件索引B+樹索引散列索引位圖索引。其中B+樹索引應用廣泛。

    在B+樹上的查找,刪除,插入的代價爲O(logN)O(log N)。建立索引有好處,當然也有

    缺點。索引會佔額外存儲空間。每次數據更新時,也要用額外的時間來維護索引。

  • 聚集索引

    一張表裏面只能有一個聚集索引,一般設置主鍵爲索引。

    數據庫中行數據的物理順序和索引順序相同。這樣的索引稱爲聚集索引。

    一張表只有一個物理順序,也就只能有一個聚集索引。

    如圖,B+樹的葉子節點爲屬性值,和元組指針(簡而言之,指向的就是主鍵對應的表中的行)

    查詢過程:如圖,通過主鍵值在B+樹上定位數據行的位置。

  • 覆蓋索引(複合索引)

    定義:包含兩個或多個屬性列的索引稱爲複合索引。

    形象定義:複合索引的結構與電話簿類似,人名由姓和名構成,電話簿首先按姓氏對進行排序,然後按名字對有相同姓氏的人進行排序。如果您知道姓,電話簿將非常有用;如果您知道姓和名,電話簿則更爲有用,但如果您只知道名不姓,電話簿將沒有用處。具體例子如下圖。建立了姓名,性別,年齡屬性列作爲複合索引。包含最左邊屬性列的查詢,覆蓋索引將起作用。

    查詢過程:如下圖,通過非聚集索引(也就是覆蓋索引)在B+樹上定位主鍵值,再利用聚集索引

    ​ 來定位到數據行。但是覆蓋索引起作用的查詢可以直接通過覆蓋索引得到值,而不

    ​ **需要再次通過聚集索引來定位數據行。**如上圖,查詢性別時,如果你已知姓名,

    ​ B+樹的葉節點存儲了性別這個屬性值。所以可以在覆蓋索引中直接得到值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章