Ich habe derzeit eine ziemlich große Tabelle (5-7 Millionen Zeilen). Diese Tabelle wird regelmäßig durch eine Prozedur neu erstellt, die die Daten in einer Staging-Tabelle erstellt und die Daten dann mithilfe der ALTER TABLE .. SWITCH TO ..
Anweisung in die Produktionstabelle umschaltet .
Beispiel:
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;
Wird bei dieser Operation auch der aktuelle Status der Indizes (oder Indexdaten, wenn Sie so wollen) umgeschaltet? Ich frage aus 2 Gründen:
1) Um eine SWITCH TO
Anweisung ausführen zu können, müssen sowohl die Quell- als auch die Zieltabelle identische Indizes enthalten. Dies lässt mich glauben, dass die Indexdaten auch umgeschaltet werden könnten, aber ich weiß nicht, wie ich das überprüfen soll.
2) Der Hauptvorteil des Aufbaus des Tisches auf diese Weise besteht darin, dass während des Gebrauchs keine übermäßigen Arbeiten am Produktionstisch ausgeführt werden. Natürlich würde es mich sehr freuen, wenn ich Indizes für die Staging-Tabelle neu erstellen und die neu erstellten Indizes zusammen mit der Tabelle auf die Produktionsindizes umstellen könnte.
quelle