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
Quando eseguo questo script di test, il ALTERcon UPDATErichiede 6 secondi, il che è comprensibile.
Tuttavia, ALTERwith with DEFAULT NOT NULLviene eseguito istantaneamente anche su una tabella molto più grande. C'è qualche spiegazione sul perché questo è istantaneo? Sul disco fisico, i dati devono ancora essere scritti su tutte le righe, giusto?
Ho provato a guardare SET STATISTICS IO ONe il piano di query, tuttavia quelli non sembrano essere disponibili per le operazioni DDL.

