インデックス オプションの設定

インデックスをデザイン、作成、または変更する場合、考慮すべきインデックス オプションがいくつかあります。これらのオプションは、インデックスの初回作成時またはインデックスの再構築時に指定できます。また、ALTER INDEX ステートメントの SET 句を使用していつでも設定できるインデックス オプションもあります。

インデックス オプション

説明

設定のメタデータへの格納

関連項目

PAD_INDEX

インデックス作成中の中間レベル ページの空き領域の割合を指定します。

FILL FACTOR

FILLFACTOR

インデックス作成中の各インデックス ページのリーフ レベルの空き領域の割合を指定します。

FILL FACTOR

SORT_IN_TEMPDB

インデックスの作成中に生成される中間の並べ替え結果を格納する場所を指定します。

ON に設定すると、並べ替え結果は tempdb に格納されます。OFF に設定すると、並べ替え結果は、作成されるインデックスの格納先であるファイル グループまたはパーティション構成に格納されます。

注意
並べ替え操作が必要ない場合、または並べ替えをメモリ内で実行できる場合、SORT_IN_TEMPDB は無視されます。

不可

tempdb およびインデックスの作成

IGNORE_DUP_KEY

挿入操作で、一意のインデックスに重複するキーの値を挿入しようとしたときのエラー応答を指定します。IGNORE_DUP_KEY オプションは、インデックスが作成または再構築された後の挿入操作のみに適用されます。既定値は OFF です。

CREATE INDEX

STATISTICS_NORECOMPUTE

古いインデックス統計値を自動的に再計算するかどうかを指定します。

インデックス統計

DROP_EXISTING

既存のインデックスを削除および再作成するかどうかを指定します。

不可

インデックスの再編成と再構築

ONLINE

インデックス操作中に、基になるテーブルやクラスター化インデックス データ、および関連付けられた任意の非クラスター化インデックスへの同時ユーザー アクセスを許可するかどうかを指定します。

注意
オンラインでのインデックス操作は、SQL Server Enterprise Edition、Developer Edition、および Evaluation Edition でのみ使用できます。

不可

オンラインでのインデックス操作の実行

ALLOW_ROW_LOCKS

インデックス データへのアクセスに行ロックを使用するかどうかを指定します。

CREATE INDEX

インデックスのロックのカスタマイズ

ALLOW_PAGE_LOCKS

インデックス データへのアクセスにページ ロックを使用するかどうかを指定します。

CREATE INDEX

インデックスのロックのカスタマイズ

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 AdventureWorks2008R2;
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