ALTER INDEX可以用来改变索引选项、重建或重组织索引以及禁用索引,但不可以用来实际地添加、删除或重排索引中的列。
可以使用CREATE INDEX...DROP EXISTING来改变既有索引的列定义。这个选项还拥有在单条命令中删除和重建索引的优点(取代同时使用DROP INDEX和CREATE INDEX)。而且,在聚集索引上使用DROP EXISTING也不会引起既有的非聚集索引自动重建,除非索引列定义已发生改变。
USE AdventureWorks
GO
--重建非聚集索引(未改变列定义):
CREATE NONCLUSTERED INDEX NCI_TerminationReason_DepartmentID ON
HumanResources.TerminationReason
(DepartmentID ASC)
WITH (DROP_EXISTING=ON)
GO
--下一步,将新的列添加到既有的非聚集索引中:
CREATE NONCLUSTERED INDEX NCI_TerminationReason_DepartmentID ON
HumanResources.TerminationReason
(ViolationSeverityLevel,DepartmentID DESC)
WITH (DROP_EXISTING=ON)
GO