【问题标题】:looping through 1 million records update with where VS update sql with where IN [closed]使用 where 循环更新 100 万条记录 VS 用 where IN 更新 sql [关闭]
【发布时间】:2015-09-25 03:44:32
【问题描述】:

我有超过 200 万条记录的表..

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

以下两者之间效率更高:

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

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

任何专家可以帮助我解决这个问题吗?

【问题讨论】:

  • 一个。基准 1,b。基准 2,比较 a 和 b,利润

标签: php mysql sql-server performance where-clause


【解决方案1】:

通常,您建议的选项 1 会比选项 2 慢,但是选项 2 会占用更多内存,并且可能会阻塞您的桌子几分钟...

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

  1. 批量更新:例如,您可以每 10000 行更新 10000 行(更新前 10000 行,然后更新接下来的 10000 行,等等...)

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


注意:关于您的选项 2,您应该考虑一个比您想要在 IN 中更新的所有 ID 更好的 WHERE 子句(例如,您可以使用您在此处使用的相同条件:“get all Million ids 并内爆它;")

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 2012-12-11
    • 2018-05-16
    • 2015-06-02
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多