循环遍历 100 万条记录 update with where VS update sql with where IN

looping through 1 million records update with where VS update sql with where IN

我有 table 超过 200 万条记录..

我可能需要更新;说 100 万条记录;

以下两者之间哪个更有效:

  1. 遍历百万条记录并 运行 使用 id=id 更新查询百万次?

  1. 获取所有百万个 ID 并将其内爆;并在 WHERE id IN (id1,id2,.....id100000)
  2. 的单个更新查询中使用它

有专家可以帮我解决这个问题吗?

一般来说,您建议的选项 1 会比选项 2 慢,但是选项 2 会消耗更多的内存并且可能会阻塞您的 table 几分钟...

这实际上取决于您的数据库架构和上下文(它是在 Dev 还是 Prod 服务器上?您需要重复这个操作吗?等等),但我会选择第三个选项:

  1. 批量更新:例如,您可以每 10000 行更新 10000 行(更新前 10000 行,然后是下 10000 行,依此类推...)

10000 显然是一个示例,正如 Dagon 在他的评论中所建议的那样,您应该尽可能测试不同的选项。


注意:关于您的选项 2,您应该考虑一个比您要在 IN 中更新的所有 ID 更好的 WHERE 子句(例如,您可以使用与此处相同的条件:“获取所有百万个 ID 并将其内爆;")