Ich habe eine Tabelle mit 45 Millionen Zeilen (45 GB Datenraum und 2 GB Indexraum). Ich habe eine neue Spalte hinzugefügt und sie wurde sofort beendet.
alter table T add C char(25)
Dann habe ich festgestellt, dass die Größe zu klein ist, sodass ich die folgende Abfrage ausführe.
alter table T alter column C varchar(2500)
Und es läuft eine Stunde und läuft noch. sp_whoisactive zeigt (im Moment läuft noch)
reads: 48,000,000
writes: 5,000,000
physical reads: 3,900,000
Sollte es nicht wirklich schnell gehen?
quelle
Ich habe den Fall getestet. Sie können dies schneller tun, indem Sie die folgenden Schritte ausführen:
Dies gibt Ihnen eine viel bessere Leistung.
Der Grund dafür ist, dass das Ändern der Spalte in der Tabelle, die Daten enthält, viel Datenübertragung und Ausrichtung der Datenseiten erfordert. Mit meiner Lösung fügen Sie einfach Daten ohne Seitenreorganisation ein.
Bearbeiten:
In meinem Test habe ich eine Tabelle mit ca. 40 Mio. Zeilen, Tabellengröße 7 GB und Indexgröße 2,5 GB verwendet. Die vorgeschlagene Methode war 1 Minute gegenüber 4 Minuten, als ich das Feld in der Originaltabelle umbenannte
quelle