インデックスと制約を有効にするためのガイドライン
インデックスを無効にすると、そのインデックスは再構築または削除されるまで、無効になります。次の方法のいずれかを使用して、無効化されたインデックスを再構築し、有効にすることができます。
- 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 REBUILD |
操作は失敗します。 |
操作は成功します。 |
DROP INDEX |
操作は成功します。 |
操作は成功します。 |
CREATE INDEX WITH DROP_EXISTING |
操作は失敗します。 |
操作は成功します。 |
参照
概念
インデックスの再編成と再構築
インデックスを無効にする場合のガイドライン
その他の技術情報
ALTER INDEX (Transact-SQL)
ALTER TABLE (Transact-SQL)