Sql更新大量行

时间:2012-10-31 21:25:14

标签: php mysql sql

我需要更新大量的行,比如100,000。 可能一个查询对服务器来说太重了。

拆分更新的最佳方法是什么? 比如更新200行,每秒睡一觉,然后是200行。

编辑:

好的,我得到了一个答案,可以在一个查询中完成。 但我仍然想知道如何做到这一点。 假设我有1,000,000行或更多行。 拆分查询的最佳方法是什么?

2 个答案:

答案 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 ..