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
Lorsque j'exécute ce script de test, le ALTERavec UPDATEprend 6 secondes, ce qui est compréhensible.
Cependant, le ALTERwith the DEFAULT NOT NULLs'exécute instantanément, même sur une table beaucoup plus grande. Y a-t-il une explication sur la raison pour laquelle cela est instantané? Sur le disque physique, les données doivent encore être écrites sur toutes les lignes, n'est-ce pas?
J'ai essayé de regarder SET STATISTICS IO ONet le plan de requête, mais ceux-ci ne semblent pas être disponibles pour les opérations DDL.

