如何將新添加的列中的數百萬條記錄插入到現有表中?
我使用alter命令向現有表添加一個新列,成功創建了所有空值,現在我想在該列中插入大資料可能是數百萬條記錄
uj5u.com熱心網友回復:
TableA => Source Table 其中新增了newColumn ReferenceTableB => Table 其中新增列中需要更新的ReferenceColumn Join => PrimeKEy 是兩個表之間的關系列
UPDATE A SET A.NewColumn = B.ReferenceColumn from TableA A 內部連接 ??ReferenceTableB On A.PrimeKEy = B.PrimeKey
uj5u.com熱心網友回復:
理想情況下,您應該做的是告訴資料引擎您想要創建具有默認值的列。這可以ALTER TABLE通過定義DEFAULT CONSTRAINT和提供WITH VALUES子句作為陳述句的一部分來完成。我在這里還假設您希望該列不能NULL:
ALTER TABLE dbo.YourTable
ADD NewColumn int NOT NULL CONSTRAINT DF_NewColumn
DEFAULT 0 WITH VALUES;
DEFAULT然后,如果該列通常不應該有值,您可以DROP使用CONSTRAINT剛剛創建的:
ALTER TABLE dbo.YourTable DROP CONSTRAINT DF_NewColumn;
但是,如果您沒有這樣做,則需要改為UPDATE該列:
UPDATE dbo.YourTable
SET NewColumn = 0;
對于大量資料,使用 anUPDATE可能會明顯變慢1 。因此,如果您還沒有開始使用新列,我建議您DROP使用它,然后使用第一個解決方案(使用DEFAULT CONSTRAINT)重新創建它。
1. 在我的個人裝備上,ALTER TABLE使用DEFAULT VALUES10,000,000 行的表大約需要 2 毫秒。對于同一張表,但使用 anUPDATE大約需要 190,000 毫秒(超過 3 分鐘)。對于具有 1,000,000 行的表,行程的平均值分別為 ~1ms 和超過 ~19,000ms。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/411064.html
標籤:
下一篇:減去視窗內的數字
