インデックスと制約を有効にするためのガイドライン
インデックスを無効にすると、そのインデックスは再構築または削除されるまで、無効になります。次の方法のいずれかを使用して、無効化されたインデックスを再構築し、有効にすることができます。
REBUILD 句を指定した ALTER INDEX ステートメント
DROP_EXISTING 句を指定した CREATE INDEX
DBCC DBREINDEX
上記のいずれかのステートメントを使用すると、インデックスが再構築され、インデックスの状態が有効に設定されます。
注 |
---|
ONLINE オプションが ON に設定されている場合、無効化されたクラスター化インデックスを再構築することはできません。 |
インデックスの再構築後、インデックスを無効にしたために無効になった制約を手動で有効にする必要があります。PRIMARY KEY 制約と UNIQUE 制約については、関連するインデックスを再構築すると有効になります。このインデックスを再構築しないと、PRIMARY KEY 制約や UNIQUE 制約を参照する FOREIGN KEY 制約を有効にすることはできません。FOREIGN KEY 制約を有効にするには、ALTER TABLE CHECK CONSTRAINT ステートメントを使用します。
無効化されたクラスター化インデックスによる非クラスター化インデックスへの影響
無効化されたクラスター化インデックスが再構築または削除された場合、非クラスター化インデックスが受ける影響は、これらのインデックスの状態が無効であるか有効であるかによって異なります。次の表に、無効化された非クラスター化インデックスが受ける影響を示します。
クラスター化インデックスが無効または有効で、非クラスター化インデックスが無効になっている場合、クラスター化インデックスの操作により、無効化された非クラスター化インデックスには、次のような影響があります。
クラスター化インデックスの操作 |
無効化された非クラスター化インデックス |
---|---|
ALTER INDEX REBUILD |
無効化されたままです。 |
ALTER INDEX ALL REBUILD |
再構築され、有効になります。 |
DROP INDEX |
無効化されたままです。 |
CREATE INDEX WITH DROP_EXISTING |
無効化されたままです。 |
新しいクラスター化インデックスの作成は、ALTER INDEX ALL REBUILD の動作と同じです。
クラスター化インデックスに関連付けられている非クラスター化インデックスに対して実行できる操作は、これらのインデックスの状態が無効であるか有効であるかによって異なります。次の表に、非クラスター化インデックスに対して実行できる操作を示します。
非クラスター化インデックスの操作 |
クラスター化インデックスと非クラスター化インデックスが無効な場合 |
クラスター化インデックスが有効で、非クラスター化インデックスが無効または有効な場合 |
---|---|---|
ALTER INDEX REBUILD |
操作は失敗します。 |
操作は成功します。 |
DROP INDEX |
操作は成功します。 |
操作は成功します。 |
CREATE INDEX WITH DROP_EXISTING |
操作は失敗します。 |
操作は成功します。 |