1

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

拆分更新的最佳方法是什么?像更新 200 行,睡一秒,然后再更新 200 行。

编辑:

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

4

2 回答 2

2

除非有您没有告诉我们的限制,否则在一个查询中更新所有内容是最好的解决方案。

由于服务器过载而考虑拆分东西似乎没有真正的用处。想想你自己的解决方案和数字。如果您有 100 万个数据集,并且您尝试一次更新 200 个数据集,然后休眠一秒钟,您最终会进行 5000 次更新并花费 83.3 分钟等待服务器完成此任务,这还不包括它所花费的时间执行查询,这可能非常快。

本质上,您会知道或选择数据库中的所有 ID,并通过在 UPDATE 中使用适当的 WHERE 子句来为每个 ID 或组发送查询。

除非我们对场景有更多了解,否则无法回答这个问题。它处理针对非常个性化的使用模式的优化东西,并且没有解决方案可以在任何地方应用。

于 2012-10-31T21:41:30.760 回答
0

使用 Limit 和 ORDER BY last_updated_time ASC 的组合...

有点像...

UPDATE table SET ..... ORDER BY last_updated_time ASC LIMIT 5000

5000 更新通常不会太严重.. 如果您想将其设置为 1000..

于 2012-10-31T21:27:08.963 回答