我需要更新大量的行,比如 100,000。 可能一个查询对服务器来说过于繁重。
拆分更新的最佳方式是什么? 比如更新 200 行,休眠一秒钟,然后再更新 200 行。
编辑:
好的,我得到的答案是可以在一个查询中执行此操作。 但我仍然想知道如何做到这一点。 假设我有 1,000,000 行或更多行。 拆分查询的最佳方式是什么?
最佳答案
除非有您没有告诉我们的约束,否则在一个查询中更新所有内容是最好的解决方案。
因为服务器过载而考虑拆分东西似乎没有实际用处。想想你自己的解决方案和数字。如果您有 100 万个数据集,您尝试一次更新 200 个,然后休眠一秒钟,您最终会进行 5000 次更新并花费 83.3 分钟等待服务器完成此任务,这还不包括花费的时间执行查询,这可能非常快。
基本上,您会知道或选择数据库中的所有 ID,并通过使用带有 UPDATE 的适当 WHERE 子句为每个 ID 或组发送查询。
除非我们对场景了解更多,否则无法回答这个问题。它涉及针对非常个性化的使用模式优化内容,没有任何解决方案可以适用于所有地方。
关于php - SQL更新大量行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13167665/