設定索引選項
設計、建立或修改索引時,有數個索引選項需納入考慮。您可以第一次建立索引或重建索引時,指定這些選項。您可以隨時使用 ALTER INDEX 陳述式的 SET 子句,選擇性地設定某些索引選項。
索引選項 |
描述 |
儲存在中繼資料中的設定 |
相關主題 |
---|---|---|---|
PAD_INDEX |
設定在建立索引期間中間層級分頁中可用空間的百分比。 |
是 |
|
FILLFACTOR |
設定在建立索引期間每個索引分頁之分葉層級中可用空間的百分比。 |
是 |
|
SORT_IN_TEMPDB |
判定在索引建立期間產生之中間排序結果會儲存於何處。 如果是 ON,排序結果會儲存於 tempdb 中。如果是 OFF,則排序結果會儲存於儲存結果索引的檔案群組或資料分割配置中。
附註
如果不需要排序作業,或是可在記憶體中執行排序,將忽略 SORT_IN_TEMPDB。
|
否 |
|
IGNORE_DUP_KEY |
指定當插入作業嘗試將重複的索引鍵值插入唯一索引時所產生的錯誤回應。IGNORE_DUP_KEY 選項只適用於在建立或重建索引之後所發生的插入作業。預設值是 OFF。 |
是 |
|
STATISTICS_NORECOMPUTE |
指定是否應該自動重新計算過期的索引統計資料。 |
是 |
|
DROP_EXISTING |
指出應該卸除現有索引並加以重建。 |
否 |
|
ONLINE |
判定索引作業期間是否允許使用者並行存取基礎資料表或叢集索引資料,以及任何相關聯的非叢集索引。
附註
只有 SQL Server Enterprise、Developer 和 Evaluation 版本上才可使用線上索引作業。
|
否 |
|
ALLOW_ROW_LOCKS |
判定是否要在存取索引資料時使用資料列鎖定。 |
是 |
|
ALLOW_PAGE_LOCKS |
判定是否要在存取索引資料時使用分頁鎖定。 |
是 |
|
MAXDOP |
設定查詢處理器最多可以使用多少個處理器來執行單一索引陳述式。根據目前的系統工作負載而定,所用的處理器可能會更少。
附註
只有 SQL Server Enterprise、Developer 和 Evaluation 版本才可使用平行索引作業。
|
否 |
|
DATA_COMPRESSION |
針對指定的資料表、資料分割編號或資料分割範圍指定資料壓縮選項。選項為 NONE、ROW 和 PAGE。 |
是 |
設定索引上的選項
設定選項而不需重建
您可以在 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_LOCKS 及 IGNORE_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