我选择了一些非聚集索引的从我的数据库具有以下内容:禁用所有非聚集索引
SELECT sys.objects.name tableName,
sys.indexes.name indexName
FROM sys.indexes
JOIN sys.objects ON sys.indexes.object_id = sys.objects.object_id
WHERE sys.indexes.type_desc = 'NONCLUSTERED'
AND sys.objects.type_desc = 'USER_TABLE'
我想运行下面的在每个结果:
ALTER INDEX indexName ON tableName DISABLE
我该怎么做呢?有没有更好的办法?
编辑
我这样做是为截断表的目的,然后与重建“ALTER INDEX ON BLA表重建”。这需要实现自动化,因此丢弃和重建将是我宁愿避免的稍高的维护活动。这是一个糟糕的计划吗?我需要一种以最小开销清空表格的方法。
您可能会更好只是删除它们,因为没有ALTER INDEX ENABLE,他们将需要重新创建。如果停用,它们将不会被维护。 – 2010-03-25 18:13:57
如果丢失,则会丢失定义,并且如果(何时)需要重新创建它们,则必须记住它们。如果禁用,定义将会保留在系统表中,您不必担心从头开始重新创建它们。 – 2010-03-25 23:15:01
@jl您可以使用ALTER INDEX REBUILD重新启用索引。 – kristianp 2014-03-20 01:18:40