SQL Server 2008 建立非聚集索引

iSQlServer發表於2008-12-18

可以對錶或索引檢視建立多個非聚集索引。通常,建立非聚集索引是為了提高聚集索引未包含的常用查詢的效能。

 典型實現
可以通過下列方法實現非聚集索引:

PRIMARY KEY 和 UNIQUE 約束
在建立 PRIMARY KEY 約束時,如果不存在該表的聚集索引且未指定唯一非聚集索引,則將自動對一列或多列建立唯一聚集索引。主鍵列不允許空值。
在建立 UNIQUE 約束時,預設情況下將建立唯一非聚集索引,以便強制 UNIQUE 約束。如果不存在該表的聚集索引,則可以指定唯一聚集索引。有關詳細資訊,請參閱 PRIMARY KEY 約束和 UNIQUE 約束。

獨立於約束的索引
預設情況下,如果未指定聚集,將建立非聚集索引。每個表可以建立的非聚集索引最多為 249 個,其中包括 PRIMARY KEY 或 UNIQUE 約束建立的任何索引,但不包括 XML 索引。

索引檢視的非聚集索引
對檢視建立唯一的聚集索引後,便可以建立非聚集索引。有關詳細資訊,請參閱建立索引檢視。

 具有包含列的索引
當建立非聚集索引以包含某個查詢時,可以在索引定義中包含非鍵列,以包含查詢中未用作主搜尋列的那些列。這樣可以提高效能,因為查詢優化器可以在索引中找到需要的所有列資料,而不用訪問表或聚集索引。有關詳細資訊,請參閱具有包含列的索引。

 具有篩選謂詞的索引
篩選索引是一種經過優化的非聚集索引,尤其適用於涵蓋從定義完善的資料子集中選擇資料的查詢。篩選索引使用篩選謂詞對錶中的部分行進行索引。與全表索引相比,設計良好的篩選索引可以提高查詢效能、減少索引維護開銷並可降低索引儲存開銷。

有關詳細資訊,請參閱篩選索引設計準則。

 磁碟空間要求
有關非聚集索引的磁碟空間要求的資訊,請參閱確定索引的磁碟空間要求。

 效能注意事項
儘管在索引中包含查詢使用的所有列這一點很重要,但要避免新增不必要的列。新增太多的索引列(鍵列或非鍵列)可能會導致下列效能後果:

一頁上容納的索引行減少,導致磁碟 I/O 增加,而緩衝效率降低。

需要更多的磁碟空間來儲存索引。

索引維護可能增加對基礎表或索引檢視執行修改、插入、更新、刪除或合併等操作所需的時間。

您應確定查詢效能的提高是否超過修改資料時對效能的影響,以及是否產生了額外的磁碟空間要求。有關評估查詢效能的詳細資訊,請參閱查詢優化。

當表資料具有定義完善的行子集的列(如稀疏列、大部分值為 NULL 的列、具有各種類別的值的列以及具有截然不同的值範圍的列)時,可考慮使用篩選索引以提高效能。有關詳細資訊,請參閱篩選索引設計準則。

在建立表時建立 PRIMARY KEY 或 UNIQUE 約束

CREATE TABLE (Transact-SQL)

對現有表建立 PRIMARY KEY 或 UNIQUE 約束

ALTER TABLE (Transact-SQL)

建立索引

CREATE INDEX (Transact-SQL)

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-515890/,如需轉載,請註明出處,否則將追究法律責任。

相關文章