在SQL Server中修改索引而不将其删除



我想修改现有索引,并在INCLUDE部分中添加一些列。这是一个相当大的表,索引需要一段时间才能运行。

有没有一种方法可以编写索引语句,这样如果我必须取消索引修改,现有的索引就不会被删除?

您可以使用CREATE INDEX...WITH(DROP_EXISITING = ON)语法来更改现有索引,以便添加添加键或包含列。这将利用现有的索引定义来避免在创建新索引时进行排序。

例如,使用原始索引定义:

CREATE INDEX idx ON dbo.YourTable(col1)
INCLUDE(col2);

这将添加一个包含的列::

CREATE INDEX idx ON dbo.YourTable(col1)
INCLUDE(col2, col3)
WITH(DROP_EXISTING = ON);

如果您使用的是Enterprise Edition,也可以考虑the ONLINE = ON选项,以避免在操作期间对表进行架构修改锁定。

最新更新