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

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

インデックス オプション

説明

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

関連トピック

PAD_INDEX

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

FILL FACTOR

FILLFACTOR

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

FILL FACTOR

SORT_IN_TEMPDB

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

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

ms188677.note(ja-jp,SQL.90).gifメモ :

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

不可

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

IGNORE_DUP_KEY

一意なクラスタ化インデックスまたは一意な非クラスタ化インデックスに複数行を挿入する INSERT トランザクションの重複したキー値に対するエラー応答を指定します。

CREATE INDEX (CREATE INDEX)

STATISTICS_NORECOMPUTE

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

インデックス統計

DROP_EXISTING

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

不可

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

ONLINE

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

ms188677.note(ja-jp,SQL.90).gifメモ :

オンラインでのインデックス操作は Microsoft SQL Server 2005 Enterprise Edition のみで実行できます。

不可

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

ALLOW_ROW_LOCKS

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

CREATE INDEX

ALLOW_PAGE_LOCKS

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

CREATE INDEX

MAXDOP

クエリ プロセッサが単一のインデックス ステートメントの実行に使用できるプロセッサの最大数を指定します。現在のシステムの作業負荷によっては、使用できるプロセッサの数が少なくなる場合があります。

ms188677.note(ja-jp,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_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)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手