我需要更新大量的行,比如100,000。 可能一个查询对服务器来说太重了。
拆分更新的最佳方法是什么? 比如更新200行,每秒睡一觉,然后是200行。
编辑:
好的,我得到了一个答案,可以在一个查询中完成。 但我仍然想知道如何做到这一点。 假设我有1,000,000行或更多行。 拆分查询的最佳方法是什么?
答案 0 :(得分:2)
除非有约束,否则您没有告诉我们,在一个查询中更新所有内容是最佳解决方案。
考虑因为服务器过载而拆分东西似乎没有实际用途。想想你自己的解决方案和数字。如果您有一百万个数据集,并且尝试一次更新200个数据集,那么睡一秒钟,您最终会进行5000次更新并花费83.3分钟等待服务器完成此任务,而不计算所花费的时间执行查询,这可能非常快。
基本上,您可以通过在UPDATE中使用适当的WHERE子句来了解或选择数据库中的所有ID,并为每个ID或组发送查询。
除非我们对该方案有更多了解,否则无法回答这个问题。它针对个人使用模式进行优化,并且无法在任何地方应用任何解决方案。
答案 1 :(得分:0)
使用Limit和ORDER BY last_updated_time ASC ...
组合某事......
UPDATE table SET ..... ORDER BY last_updated_time ASC LIMIT 5000
5000次更新通常不太常见..如果你想把它设置为1000 ..