tôi chọn một số chỉ số không clustered từ cơ sở dữ liệu của tôi với những điều sau đây:Disable tất cả các chỉ số không clustered
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'
Tôi muốn chạy sau hơn so với từng kết quả:
ALTER INDEX indexName ON tableName DISABLE
Làm cách nào để tôi thực hiện việc này? Có cách nào tốt hơn?
EDIT
tôi đang làm điều này với mục đích cắt bỏ bảng, sau đó xây dựng lại với "ALTER INDEX bla ON bảng xây dựng lại". Điều này cần phải được tự động, do đó, giảm và xây dựng lại sẽ là một hoạt động bảo trì cao hơn một chút tôi muốn tránh. Đây có phải là kế hoạch tồi không? Tôi cần một phương tiện làm trống các bảng với chi phí tối thiểu.
Bạn có thể nên tắt chúng vì không có ALTER INDEX ENABLE, chúng sẽ cần được tạo lại. Chúng sẽ không được duy trì nếu bị vô hiệu hóa. –
Nếu bị bỏ, bạn sẽ mất các định nghĩa và sẽ phải nhớ chúng nếu (khi nào) bạn cần tạo lại chúng. Nếu bị tắt, các định nghĩa sẽ được lưu giữ trong bảng hệ thống và bạn không phải lo lắng về việc tạo lại chúng từ đầu. –
@jl bạn có thể kích hoạt lại chỉ mục bằng cách sử dụng ALTER INDEX REBUILD. – kristianp