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, ALTER
ile UPDATE
anlaşılabilir olan 6 saniye sürer.
Ancak, ALTER
ile 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 ON
ve Sorgu planı, ancak bu DDL işlemleri için kullanılabilir görünmüyor.