我在SQL Server上有一个非常庞大的表,行数约为10亿,我们需要使用如此简单的代码将数据从这个表迁移到另一个表:
SET XACT_ABORT ON
BEGIN TRAN
INSERT INTO TargetTable
SELECT Col1, Col2, ... ColN
FROM
HugeTable ht
INNER JOIN AnotherHugeTable aht ON aht.ID = ht.ColN
WHERE ColX IS NOT NULL
COMMIT TRAN
是否可以在单笔交易中完成?在这种情况下你会怎么做呢?
答案 0 :(得分:4)
这取决于您运行它的情况和业务要求。
请记住,您的事务日志可能会变得很大......(您多久备份一次TLog?)
如果可能的话,分成10,000个(或100,000个)批次。
如果你有数十亿行的表,你应该调查表分区(需要企业版的SQL Server)。