用戶對數據庫最頻繁的操作是數據查詢。通常,數據庫在查詢時需要搜索整個表。當表中有大量數據時,搜索數據需要很長時間,這造成了服務器資源的浪費。為了提高檢索數據的能力,數據庫引入了索引機制。
2.關於“索引”的隱喻
在某種程度上,數據庫可以被視為壹本書,索引可以被視為圖書目錄。通過目錄查找書中的信息顯然比沒有目錄的書更方便、更快捷。
索引是壹種獨立的物理數據庫結構,它是表中壹個或多個列值的集合,以及指向數據頁的相應邏輯指針列表,這些數據頁在物理上標識表中的這些值。
4.表中索引的作用
表的存儲由兩部分組成,壹部分用於存儲表的數據頁,另壹部分用於存儲索引頁。索引存儲在索引頁上。
5.指數效率原則
通常,索引頁比數據頁小得多。在檢索數據時,系統首先搜索索引頁找到所需數據的指針,然後通過指針直接從數據頁讀取數據。
6.指數分類
在SQL Server數據庫中,索引根據存儲結構的不同分為兩類:聚集索引和非聚集索引。
1)簇索引按列對表的物理數據頁中的數據進行排序,然後將其重新存儲在磁盤上,即簇索引和數據混合在壹起,實際數據存儲在其葉節點中。因為聚簇索引逐個對表中的數據進行排序,所以使用聚簇索引查找數據非常快。但是,由於簇索引完全重新排列表中的所有數據,因此它需要非常大的空間,大約是表中數據所占空間的120%。壹個表的數據行只能以壹種排序方式存儲在磁盤上,因此壹個表只能有壹個簇索引。
2)非聚集索引具有與表中的數據完全分離的結構,因此在使用非聚集索引時沒有必要按列對物理數據頁中的數據進行排序。非聚集索引的葉節點存儲組成非聚集索引的關鍵字和行定位器的值。線定位器的結構和存儲內容取決於數據的存儲模式。如果數據以簇索引的方式存儲,則簇索引的索引鍵存儲在行定位器中;如果數據不是通過簇索引(也稱為堆結構)存儲的,則行定位器存儲指向數據行的指針。非簇索引根據關鍵字的值以某種方式對行定位器進行排序,這與數據頁中表行的排序不匹配。因為非聚集索引使用索引頁進行存儲,所以它比聚集索引需要更多的存儲空間,並且檢索效率較低。但是,壹個表只能構建壹個聚集索引,因此當用戶需要構建多個索引時,他們需要使用非聚集索引。