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
このテストスクリプトを実行すると、ALTER
with UPDATE
は6秒かかります。
ただし、ALTER
withはDEFAULT NOT NULL
、はるかに大きなテーブルでも瞬時に実行されます。これが瞬間的である理由について説明はありますか?物理ディスクでは、データをすべての行に書き込む必要がありますか?
SET STATISTICS IO ON
クエリプランを見てみましたが、DDL操作に使用できないようです。