建立非叢集索引
您可以在資料表或索引檢視上建立多個非叢集索引。一般而言,建立非叢集索引是為了改善那些未包含在叢集索引中,但經常使用的查詢之效能。
一般實作
非叢集索引的實作方法如下:
- PRIMARY KEY 和 UNIQUE 條件約束
當您建立 PRIMARY KEY 條件約束時,如果資料表上的叢集索引尚未存在,而且您未並指定唯一的非叢集索引,則會在資料行上自動建立唯一的叢集索引。 主索引鍵資料行不允許 NULL 值。
當您建立 UNIQUE 條件約束時,依預設會建立唯一的非叢集索引,以強制 UNIQUE 條件約束。若資料表上還沒有叢集索引,您可以指定唯一叢集索引。如需詳細資訊,請參閱<PRIMARY KEY 條件約束>與<UNIQUE 條件約束>。 - 獨立於條件限制之外的索引
依預設,若是未指定叢集索引,則會建立非叢集索引。每個資料表最多可以建立 249 個非叢集索引 (包括由 PRIMARY KEY 或 UNIQUE 條件約束所建立的任何索引,但不包含 XML 索引)。 - 索引檢視上的非叢集索引
在檢視上建立唯一的叢集索引後,就可以建立非叢集索引。如需詳細資訊,請參閱<建立索引檢視>。
內含資料行的索引
當您建立非叢集索引以涵蓋查詢時,您可以在索引定義中包含無索鍵資料行,以涵蓋查詢中未被做為主要搜尋資料行的資料行。由於查詢最佳化工具可以尋找索引中所有需要的資料行資料,且不會存取資料表或叢集索引,因此可以提升效能。如需詳細資訊,請參閱<具有內含資料行的索引>。
磁碟空間需求
如需非叢集索引之磁碟空間需求的詳細資訊,請參閱<決定索引的磁碟空間需求>。
效能考量因素
雖然索引必須包含查詢所使用的所有資料行,但是請避免加入不必要的資料行。加入太多的索引資料行,不論是有索引鍵或無索引鍵,都可能造成下列效能的改變:
- 由於磁碟 I/O 增加且快取效率降低,一頁上所能容納的索引資料列較少。
- 必須有更多磁碟空間才能儲存索引。
- 對基礎資料表或索引檢視執行修改、插入、更新或刪除時,可能會增加索引維護的時間。
您應該判斷查詢效能的提升,是否超越了資料修改期間對效能的影響以及額外磁碟空間需求的增加。如需評估查詢效能的詳細資訊,請參閱<查詢微調>。
若要在建立資料表時建立 PRIMARY KEY 或 UNIQUE 條件約束
若要在現有的資料表上建立 PRIMARY KEY 或 UNIQUE 條件約束
若要建立索引
請參閱
概念
建立索引 (Database Engine)
非叢集索引設計指導方針