設定索引選項

設計、建立或修改索引時,有數個索引選項需納入考慮。您可以第一次建立索引或重建索引時,指定這些選項。您可以隨時使用 ALTER INDEX 陳述式的 SET 子句,選擇性地設定某些索引選項。

索引選項

描述

儲存在中繼資料中的設定

相關主題

PAD_INDEX

設定在建立索引期間中間層級分頁中可用空間的百分比。

填滿因數

FILLFACTOR

設定在建立索引期間每個索引分頁之分葉層級中可用空間的百分比。

填滿因數

SORT_IN_TEMPDB

判定在索引建立期間產生之中間排序結果會儲存於何處。

如果是 ON,排序結果會儲存於 tempdb 中。如果是 OFF,則排序結果會儲存於儲存結果索引的檔案群組或資料分割配置中。

ms188677.note(zh-tw,SQL.90).gif附註:

如果不需要排序作業,或是可在記憶體中執行排序,將忽略 SORT_IN_TEMPDB。

tempdb 與索引建立

IGNORE_DUP_KEY

指定在唯一叢集或唯一非叢集索引的多資料列 INSERT 交易中,對於索引鍵值重複的錯誤回應。

CREATE INDEX

STATISTICS_NORECOMPUTE

指定是否應該自動重新計算過期的索引統計資料。

索引統計資料

DROP_EXISTING

指出應該卸除現有索引並加以重建。

重新組織和重建索引

ONLINE

判定索引作業期間是否允許使用者並行存取基礎資料表或叢集索引,以及任何相關聯的非叢集索引。

ms188677.note(zh-tw,SQL.90).gif附註:

只有 Microsoft SQL Server 2005 Enterprise Edition 才支援線上索引作業。

執行線上索引作業

ALLOW_ROW_LOCKS

判定是否要在存取索引資料時使用資料列鎖定。

CREATE INDEX

ALLOW_PAGE_LOCKS

判定是否要在存取索引資料時使用分頁鎖定。

CREATE INDEX

MAXDOP

設定查詢處理器最多可以使用多少個處理器來執行單一索引陳述式。根據目前的系統工作負載而定,所用的處理器可能會更少。

ms188677.note(zh-tw,SQL.90).gif附註:

只有 SQL Server 2005 Enterprise Edition 才支援平行索引作業。

設定平行索引作業

若要設定索引上的選項

ALTER INDEX (Transact-SQL)

設定選項而不需重建

您可以在 ALTER INDEX 陳述式中使用 SET 子句,設定下列索引選項,而不需重建索引:

  • ALLOW_PAGE_LOCKS
  • ALLOW_ROW_LOCKS
  • IGNORE_DUP_KEY
  • STATISTICS_NORECOMPUTE

這些選項會立即套用到索引。只在建立或重建索引時,才能指定其他索引選項,如 FILLFACTOR 及 ONLINE。

檢視索引選項設定

不是所有的索引選項值都會儲存在中繼資料中。您可以利用適當的目錄檢視,檢視那些儲存於中繼資料中的值。若要檢查現有索引上的目前選項設定,請使用 sys.indexes 目錄檢視。若要檢查 STATISTICS_NORECOMPUTE 的目前值,請使用 sys.stats 目錄檢視。如需詳細資訊,請參閱<檢視索引資訊>。

範例

下列範例會對 Production.Product 資料表上的 AK_Product_ProductNumber 索引,設定 ALLOW_ROW_LOCKSIGNORE_DUP_KEY 選項。

USE AdventureWorks;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber       
ON Production.Product       
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes 
WHERE name = N'AK_Product_ProductNumber';
GO

請參閱

概念

修改索引

其他資源

sys.indexes (Transact-SQL)
sys.stats (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助