Saya memiliki skrip yang saya gunakan untuk menanyakan tabel sistem untuk menangkap semua indeks yang tidak berkerumun dan menonaktifkan kemudian membangun kembali setelah selesai. Di bawah ini untuk digunakan pada edisi standar, jika Anda berada di perusahaan saya akan menambahkan ONLINE
pilihan.
Nonaktifkan
DECLARE @sql AS VARCHAR(MAX);
SET @sql = '';
SELECT
@sql = @sql + 'ALTER INDEX [' + i.name + '] ON [' + o.name + '] DISABLE; '
FROM sys.indexes AS i
JOIN sys.objects AS o ON i.object_id = o.object_id
WHERE i.type_desc = 'NONCLUSTERED'
AND o.type_desc = 'USER_TABLE'
EXEC (@sql)
Bangun kembali
DECLARE @sql AS VARCHAR(MAX);
SET @sql = '';
SELECT
@sql = @sql + 'ALTER INDEX [' + i.name + '] ON [' + o.name + '] REBUILD WITH (FILLFACTOR = 80); '
FROM sys.indexes AS i
JOIN sys.objects AS o ON i.object_id = o.object_id
WHERE i.type_desc = 'NONCLUSTERED'
AND o.type_desc = 'USER_TABLE'
EXEC (@sql);
Saya suka metode ini karena sangat dapat disesuaikan karena Anda dapat mengecualikan/menyertakan tabel tertentu berdasarkan kondisi serta menghindari kursor. Anda juga dapat mengubah EXEC
ke PRINT
dan lihat kode yang akan dijalankan dan jalankan secara manual.
Kondisi untuk mengecualikan tabel
AND o.name NOT IN ('tblTest','tblTest1');