Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Secara Otomatis Jatuhkan dan Buat kembali indeks saat ini

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');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memilih hanya entri terbaru dalam tabel?

  2. Jadikan server otomatis menjalankan asp-script setiap hari

  3. Dapatkan Info Kolom untuk Tabel atau Tampilan di SQL Server (T-SQL:sp_columns)

  4. Pernyataan SQL CASE:Apa itu dan apa cara terbaik untuk menggunakannya?

  5. Cari teks dalam prosedur tersimpan di SQL Server