如何在Mysql中为大量行更新批处理



我以前看到过关于批量更新行的答案,但在Mysql中都不起作用;我有超过800万行要更新,我看到最好的方法是将它们分成批次,我也看到了T-sql的答案:

Declare @Rowcount INT = 1;
WHILE (@Rowcount > 0)   
BEGIN
UPDATE TOP (100000) [table]   --<-- define Batch Size in TOP Clause
SET [New_ID] = [Old_ID]
WHERE [New_ID] <> [Old_ID]
SET @Rowcount = @@ROWCOUNT;
CHECKPOINT;   --<-- to commit the changes with each batch
END

有人能为mysql做同样的事情吗?或者实现我的想法:我需要从第1行开始,并将第1行更新为1000行,然后从1001行更新为2000行,等等。。。

我相信您可以使用INSERT。。。使用ON DUPLICATE KEY UPDATE选项进行选择。该操作将检查该键是否已存在于目标表中,如果已存在,则执行指定的更新。

这里的关键点是彻底地制定SELECT语句,尤其是在计划分批执行时的顺序。

最新更新