CREATE TABLE TestTab (ID INT IDENTITY(1,1), st nvarchar(100))
INSERT INTO TestTab (st) values ('a')
INSERT INTO TestTab (st) values ('b')
INSERT INTO TestTab (st) values ('c')
INSERT INTO TestTab (st) values ('d')
INSERT INTO TestTab (st) values ('e')
INSERT INTO TestTab (st) SELECT TOP 10000 st from testtab
GO 30
ALTER TABLE TestTab ADD newcol nvarchar(10) DEFAULT 'newcol'
UPDATE TestTab SET newcol = 'newcol' --6 sec
ALTER TABLE TestTab ADD newcol1 nvarchar(10) DEFAULT 'newcol1' NOT NULL
DROP TABLE TestTab
Wenn ich dieses Testskript ausführe, dauert das ALTERmit UPDATE6 Sekunden, was verständlich ist.
Allerdings wird das ALTERmit dem DEFAULT NOT NULLsofort auch auf einem viel größeren Tisch ausgeführt. Gibt es eine Erklärung dafür, warum dies augenblicklich geschieht? Auf der physischen Festplatte müssen noch Daten in alle Zeilen geschrieben werden, oder?
Ich habe versucht, SET STATISTICS IO ONden Abfrageplan zu betrachten, aber diese scheinen für DDL-Operationen nicht verfügbar zu sein.

