Tôi hiện có một bảng khá lớn (5 - 7 triệu hàng). Bảng này được xây dựng lại thường xuyên bằng thủ tục xây dựng dữ liệu trong bảng phân tầng, sau đó chuyển dữ liệu vào bảng sản xuất bằng cách sử dụng ALTER TABLE .. SWITCH TO ..
câu lệnh.
Thí dụ:
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;
Khi thao tác này được thực hiện, trạng thái hiện tại của các chỉ mục (hoặc dữ liệu chỉ mục nếu bạn sẽ) cũng được chuyển đổi? Tôi hỏi vì 2 lý do:
1) Để thực hiện một SWITCH TO
câu lệnh, một yêu cầu là cả bảng nguồn và bảng đích phải chứa các chỉ mục giống hệt nhau. Điều này khiến tôi tin rằng dữ liệu chỉ mục cũng có thể được chuyển đổi, nhưng tôi không biết cách xác minh điều này.
2) Lợi ích chính của việc xây dựng bảng theo cách này là tránh thực hiện công việc quá mức trên bàn sản xuất trong khi sử dụng. Đương nhiên, sẽ rất vui nếu tôi có thể xây dựng lại các chỉ mục trên bảng phân tầng và các chỉ mục được xây dựng lại được chuyển sang các chỉ mục sản xuất cùng với bảng.