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 with DEFAULT NOT NULL
는 훨씬 더 큰 테이블에서도 즉시 실행됩니다. 이것이 순간적인 이유에 대한 설명이 있습니까? 물리 디스크에서 여전히 모든 행에 데이터를 써야합니까?
SET STATISTICS IO ON
쿼리 계획을 살펴 보았지만 DDL 작업에 사용할 수없는 것 같습니다.