Saat ini saya memiliki meja yang agak besar (5-7 juta baris). Tabel ini dibangun kembali secara teratur dengan prosedur yang membangun data dalam tabel pementasan, kemudian mengalihkan data ke dalam tabel produksi menggunakan ALTER TABLE .. SWITCH TO ..
pernyataan.
Contoh:
BEGIN TRAN;
-- Rebuild indexes
ALTER INDEX IX_NC_GroupEvent_staging_GroupName on [dbo].[GroupEvent_staging]
REBUILD;
ALTER INDEX IX_NC_GroupEvent_staging_Created ON [dbo].[GroupEvent_staging]
REBUILD;
-- Empty production table
TRUNCATE TABLE [dbo].[GroupEvent];
-- Switch data from staging-table into production table
ALTER TABLE [dbo].[GroupEvent_staging] SWITCH TO [dbo].[GroupEvent]
COMMIT;
Ketika operasi ini dilakukan, apakah keadaan saat ini dari indeks (atau data indeks jika Anda mau) akan beralih juga? Saya bertanya karena 2 alasan:
1) Untuk melakukan SWITCH TO
pernyataan, persyaratannya adalah bahwa tabel sumber dan target harus berisi indeks yang sama. Ini membuat saya percaya bahwa indeks-data mungkin juga diaktifkan, tetapi saya tidak tahu cara memverifikasi ini.
2) Manfaat utama membangun meja dengan cara ini adalah untuk menghindari melakukan pekerjaan berlebihan di atas meja produksi saat sedang digunakan. Secara alami, itu akan membuat saya sangat senang jika saya dapat membangun kembali indeks di atas meja panggung dan membuat indeks yang dibangun kembali dialihkan ke indeks produksi bersama dengan tabel.
sumber