我選擇了一些非聚集索引的從我的數據庫具有以下內容:禁用所有非聚集索引
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