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
Bu test komut dosyasını yürüttüğümde, ALTERile UPDATEanlaşılabilir olan 6 saniye sürer.
Ancak, ALTERile DEFAULT NOT NULLçok daha büyük bir tablo üzerinde bile anında yürütür. Bunun neden anlık olduğuna dair herhangi bir açıklama var mı? Fiziksel diskte, verilerin hala tüm satırlara yazılması gerekiyor, değil mi?
Ben denedim SET STATISTICS IO ONve Sorgu planı, ancak bu DDL işlemleri için kullanılabilir görünmüyor.

