【问题标题】:MySQL: One big query or multiple small queries?MySQL:一个大查询还是多个小查询?
【发布时间】:2020-07-23 13:26:59
【问题描述】:

对于一些上下文,我有一个 4G RAM 服务器,并且我有一个 cron 作业,它遍历一个大约 1500 万行的 MySQL 表并进行一些处理。

为了节省内存,我一次循环并选择 200,000 条记录,然后重复直到我浏览完表中的每条记录。

这样做会更快还是我应该减少查询但每次选择更大的子集?

【问题讨论】:

  • 测试您描述的替代方法,您肯定会知道答案。
  • 如果您可以清楚地识别成批的行,那么单独处理它们是可能的。这样做的好处是,如果无法对查询进行管道化,您可以使用更少的资源,但代价是更多的编程和管理。

标签: mysql


【解决方案1】:

这取决于您使用的语言/客户端库。 MySQL 有两种不同的方法,mysql_store_result 和 mysql_use_result。前者将在循环之前将服务器中的所有行读入内存,这样效率更高,但内存成本更高。后者可以推迟获取行,直到您遍历它们。一些客户端允许选择使用哪个。

最后,如果您想知道是否对请求进行批处理以及批处理多少,您将需要对您的实际情况进行基准测试。

【讨论】:

    猜你喜欢
    • 2012-08-31
    • 2023-03-07
    • 2019-12-27
    • 2012-09-17
    • 1970-01-01
    • 2011-04-24
    • 2012-04-08
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多