Actualmente tengo una tabla bastante grande (5-7 millones de filas). Esta tabla se reconstruye regularmente mediante un procedimiento que construye los datos en una tabla de etapas, luego cambia los datos a la tabla de producción utilizando la ALTER TABLE .. SWITCH TO ..
instrucción.
Ejemplo:
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;
Cuando se realiza esta operación, ¿se cambia también el estado actual de los índices (o los datos del índice si lo desea)? Estoy preguntando por 2 razones:
1) Para realizar una SWITCH TO
declaración, un requisito es que tanto la tabla de origen como la de destino deben contener índices idénticos. Esto me lleva a creer que los datos de índice también podrían cambiarse, pero no sé cómo verificar esto.
2) El principal beneficio de construir la mesa de esta manera es evitar realizar un trabajo excesivo en la mesa de producción mientras está en uso. Naturalmente, me haría muy feliz si pudiera reconstruir índices en la tabla de etapas y hacer que los índices reconstruidos se cambien a los índices de producción junto con la tabla.
fuente