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
Ketika saya menjalankan skrip pengujian ini, ALTER
dengan UPDATE
membutuhkan waktu 6 detik yang bisa dimengerti.
Namun, ALTER
dengan DEFAULT NOT NULL
mengeksekusi instan bahkan di atas meja yang jauh lebih besar. Apakah ada penjelasan mengapa ini instan? Pada disk fisik, data masih perlu ditulis ke semua baris, kan?
Saya mencoba melihat SET STATISTICS IO ON
dan rencana Query, tetapi sepertinya itu tidak tersedia untuk operasi DDL.