mssql 2005 中的索引
索引是一種與資料表或檢視有關的磁碟內存結構,它會加快從該資料表或檢視中擷取資料列的速度。索引中包含從資料表或檢視中一或多個資料行建出的索引鍵。這些索引鍵儲存在結構中 (B 型樹狀目錄),讓 SQL Server 可以快速有效地找到與索引鍵值相關的一或多個資料列。
資料表或檢視可包含下列類型的索引:
- 叢集
- 叢集索引將資料表或檢視中的資料列依其索引鍵值排序與儲存。這些就是索引定義中包含的資料行。因為資料列本身只能以一種順序排序,所以每個資料表只能有一個叢集索引。
- 只有當資料表包含叢集索引時,資料表中的資料列才會以排序順序儲存。當資料表有叢集索引時,資料表又稱為叢集資料表。如果資料表沒有任何叢集索引,它的資料列就儲存在未排序的結構中,這個結構稱為堆積。
- 叢集索引將資料表或檢視中的資料列依其索引鍵值排序與儲存。這些就是索引定義中包含的資料行。因為資料列本身只能以一種順序排序,所以每個資料表只能有一個叢集索引。
- 非叢集
- 非叢集索引有一個與資料列完全分開的結構。非叢集索引包含非叢集索引鍵值,而每個索引鍵值項目都有一個指標,指向包含索引鍵值的資料列。
- 從非叢集索引中的索引列指向資料列的指標被稱為資料列定位器。資料列定位器的結構須視資料頁儲存在堆積或叢集資料表而定。若是堆積,資料列定位器是指向資料列的指標。若是叢集資料表,資料列定位器就是叢集索引鍵。
- 在 SQL Server 2005 中,您可以將無索引鍵資料行加入非叢集索引的分葉層級中,以規避現有索引鍵的限制 (900 位元組和 16 個索引鍵資料行),並執行完全涵蓋的索引查詢。如需詳細資訊,請參閱<具有內含資料行的索引>。
- 非叢集索引有一個與資料列完全分開的結構。非叢集索引包含非叢集索引鍵值,而每個索引鍵值項目都有一個指標,指向包含索引鍵值的資料列。
下表列出 SQL Server 2005 中可用的索引類型,並提供其他資訊的連結。
索引類型 | 描述 | 其他資訊 |
---|---|---|
叢集 |
索引叢集根據叢集索引鍵的順序來排序和儲存資料表或檢視的資料列。叢集索引將實作成 B 型樹狀索引結構,以根據它們的叢集索引鍵值快速地擷取資料列。 |
|
非叢集 |
非叢集索引可在具有叢集索引的資料表或檢視中、或是堆積中定義。非叢集索引中的每個索引資料列都含有非叢集鍵值與資料列定位器。此定位器指向含有鍵值之叢集索引或堆積中的資料列。索引中的資料列會依據索引鍵值的順序儲存,但除非叢集索引建立在資料表中,否則資料列不一定會依循任何特定的順序排列。 |
|
唯一 |
唯一索引可確保索引鍵不含重複的值,因此資料表或檢視中的每個資料列就某方面而言都是唯一的。 叢集與非叢集索引都可以是唯一的。 |
|
具有內含資料行的索引 |
除了索引鍵資料行以外,擴充為含有無索引鍵資料行的非叢集索引。 |
|
索引檢視 |
將檢視中的索引具體化 (執行) 時,檢視與結果集會永久儲存在唯一的叢集索引中,儲存方式與具有叢集索引的資料表相同。叢集索引建立後,即可加入檢視中的非叢集索引。 |
|
全文檢索 |
一種特殊類型的 Token 式功能索引,由 Microsoft Full-Text Engine for SQL Server (MSFTESQL) 服務所建立與維護。它可以有效地在字元字串資料中進行複雜字的搜尋。 |
|
XML |
在 xml 資料類型資料行中,一種細分且持續的 XML 二進位大型物件 (BLOB) 表示法。 |