啟用索引和條件約束的指導方針
在停用索引後,在重建或卸除索引之前仍然是停用狀態。您可以重建索引或使用下列其中一個方法來啟用停用的索引:
ALTER INDEX 陳述式加上 REBUILD 子句
CREATE INDEX 加上 DROP_EXISTING 子句
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 |
此動作會失敗。 |
此動作會成功。 |