インデックス オプションの設定
インデックスをデザイン、作成、または変更する場合、考慮すべきインデックス オプションがいくつかあります。これらのオプションは、インデックスの初回作成時またはインデックスの再構築時に指定できます。また、ALTER INDEX ステートメントの SET 句を使用していつでも設定できるインデックス オプションもあります。
インデックス オプション
説明
設定のメタデータへの格納
関連トピック
PAD_INDEX
インデックス作成中の中間レベル ページの空き領域の割合を指定します。
可
FILLFACTOR
インデックス作成中の各インデックス ページのリーフ レベルの空き領域の割合を指定します。
可
SORT_IN_TEMPDB
インデックスの作成中に生成される中間の並べ替え結果を格納する場所を指定します。
ON に設定すると、並べ替え結果は tempdb に格納されます。OFF に設定すると、並べ替え結果は、作成されるインデックスの格納先であるファイル グループまたはパーティション構成に格納されます。
メモ :
並べ替え操作が必要ない場合、または並べ替えをメモリ内で実行できる場合、SORT_IN_TEMPDB は無視されます。
不可
IGNORE_DUP_KEY
一意なクラスタ化インデックスまたは一意な非クラスタ化インデックスに複数行を挿入する INSERT トランザクションの重複したキー値に対するエラー応答を指定します。
可
STATISTICS_NORECOMPUTE
古いインデックス統計値を自動的に再計算するかどうかを指定します。
可
DROP_EXISTING
既存のインデックスを削除および再作成するかどうかを指定します。
不可
ONLINE
インデックス操作中に、基になるテーブルやクラスタ化インデックス データ、および関連付けられた任意の非クラスタ化インデックスへの同時ユーザー アクセスを許可するかどうかを指定します。
メモ :
オンラインでのインデックス操作は Microsoft SQL Server 2005 Enterprise Edition のみで実行できます。
不可
ALLOW_ROW_LOCKS
インデックス データへのアクセスに行ロックを使用するかどうかを指定します。
可
ALLOW_PAGE_LOCKS
インデックス データへのアクセスにページ ロックを使用するかどうかを指定します。
可
MAXDOP
クエリ プロセッサが単一のインデックス ステートメントの実行に使用できるプロセッサの最大数を指定します。現在のシステムの作業負荷によっては、使用できるプロセッサの数が少なくなる場合があります。
メモ :
並列インデックス操作は、SQL Server 2005 Enterprise Edition のみで使用できます。
不可
インデックスにオプションを設定するには
再構築しない場合のオプションの設定
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
参照
概念
その他の技術情報
sys.indexes (Transact-SQL)
sys.stats (Transact-SQL)