0

我在 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

单笔交易可以吗?在这种情况下你会怎么做?

4

1 回答 1

4

这将取决于您运行它的环境和业务需求。

请记住,您的事务日志可能会变得很大……(您多久备份一次 TLog?)

如果可能的话,分成 10,000 个(或 100,000 个)的批次。

如果你的表有数十亿行,你应该研究表分区(需要企业版的 SQL Server)。

于 2012-05-11T04:59:07.663 回答