Ich habe Probleme, irgendwo eine endgültige Ressource zu finden, also kann mir hoffentlich ein Guru hier eine Antwort geben.
Ich habe eine sehr große Tabelle, zu der wir eine Spalte hinzufügen mussten. Der Clustered-Index ist ziemlich stark fragmentiert, und ich möchte eine ALTER INDEX REBUILD
Bereinigung durchführen.
Normalerweise mache ich auch eine, ALTER TABLE REBUILD
wenn ich die Spalten ändere, da dies alle Zeiger oder Teilungen von dieser Operation bereinigt.
Muss ich beides tun, da es sich um einen Clustered-Index handelt, bei dem es sich im Wesentlichen um die Tabelle handelt?
Mein Verdacht ist, dass ALTER INDEX REBUILD
auf dem Cluster nicht alles aktualisiert wird, was der ALTER TABLE
Wille ist, aber ich befürchte auch, dass der die ALTER TABLE
Indexfragmentierung nicht bereinigt.
Antworten:
Wenn Sie den Clustered-Index neu erstellen, sollte es nicht erforderlich sein, die Tabelle neu zu erstellen. Wenn die Tabelle ein Heap war (keinen Clustered-Index hatte), möchten Sie sie möglicherweise neu erstellen.
quelle
ALTER TABLE REBUILD
da dadurch Zeiger behoben werden, die bei der Indexwiederherstellung nicht behoben wurden. Ist das nicht mehr der Fall?Neu erstellen löscht und erstellt den Index neu. Wenn Sie einen Clustered-Index erstellen, werden zusätzlich zum Erstellen des CIX die Zeilen einer Tabelle neu angeordnet (eine Tabelle ohne CIX ist ein Heap).
quelle