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
Cuando ejecuto este script de prueba, la toma ALTER
con UPDATE
6 segundos, lo cual es comprensible.
Sin embargo, el ALTER
con el se DEFAULT NOT NULL
ejecuta instantáneamente incluso en una tabla mucho más grande. ¿Hay alguna explicación de por qué esto es instantáneo? En el disco físico, los datos aún deben escribirse en todas las filas, ¿verdad?
Intenté mirar SET STATISTICS IO ON
y el plan de consulta, sin embargo, esos no parecen estar disponibles para las operaciones DDL.