J'ai actuellement une table assez grande (5-7 millions de lignes). Cette table est reconstruite régulièrement par une procédure qui construit les données dans une table intermédiaire, puis bascule les données dans la table de production à l'aide de l' ALTER TABLE .. SWITCH TO ..
instruction.
Exemple:
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;
Lorsque cette opération est effectuée, l'état actuel des index (ou des données d'index si vous le souhaitez) est-il également modifié? Je pose la question pour 2 raisons:
1) Afin d'exécuter une SWITCH TO
instruction, une condition est que la table source et la table cible doivent contenir des index identiques. Cela m'amène à croire que les données d'index pourraient également être changées, mais je ne sais pas comment le vérifier.
2) Le principal avantage de la construction de la table de cette manière est d'éviter d'effectuer un travail excessif sur la table de production pendant son utilisation. Naturellement, cela me rendrait très heureux si je pouvais reconstruire des index sur la table de transfert et faire basculer les index reconstruits vers les index de production avec la table.
la source