在这个技巧中,将展示如何在SQL Server查询中禁用索引。禁用索引在SQL Server中保留了元数据定义,但会导致索引不可用。建议将禁用索引作为索引故障处理技术,或如果发生磁盘错误并且你要延迟索引重建时再使用。
如果禁用聚集索引,要牢记表索引数据将不再是可访问的。这是因为聚集索引的叶级别就是实际的表数据本身.并且,重新启用索引意味着重新创建或重组织索引。
通过使用ALTER INOEX命令禁用索引。语法如下:
ALTER INDEX index_name ON
table_or_view DISABLE
该命令有两个参数:索引的名称和创建的索引所在的表或视图的名称.
USE AdventureWorks
GO
ALTER INDEX UNI_TerminationReason ON
HumanResources.TerminationReason DISABLE
如果索引是被禁用的,索引的定义还保留在系统表中,但用户不能再使用索引。对于表上的非聚集索引,索引数据真正从数据库中删除了阜对于表上的聚集索引,数据仍留在磁盘上,但因为索引是禁用的,你不可以查询它。对于视图上的聚集或非聚集索引,索引数据从数据库中被删除。
要重新启用索引,可以使用带有OROP_EXISTING命令的CREATE INBEX或使用ALTER INDEX REBUILD。重建禁用的非聚集索引将重用原始索引使用的现有空间。