インデックス オプションの設定
インデックスをデザイン、作成、または変更する場合、考慮すべきインデックス オプションがいくつかあります。これらのオプションは、インデックスの初回作成時またはインデックスの再構築時に指定できます。また、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 Edition、Developer Edition、および Evaluation Edition でのみ使用できます。
|
不可 |
|
ALLOW_ROW_LOCKS |
インデックス データへのアクセスに行ロックを使用するかどうかを指定します。 |
可 |
|
ALLOW_PAGE_LOCKS |
インデックス データへのアクセスにページ ロックを使用するかどうかを指定します。 |
可 |
|
MAXDOP |
クエリ プロセッサが単一のインデックス ステートメントの実行に使用できるプロセッサの最大数を指定します。現在のシステムの作業負荷によっては、使用できるプロセッサの数が少なくなる場合があります。
注意
並列インデックス操作は、SQL Server Enterprise Edition、Developer Edition、および Evaluation Edition でのみ使用できます。
|
不可 |
|
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