【问题标题】:Large pagesize with less iteration vs small pagesize with more iteration具有较少迭代的大页面大小与具有更多迭代的小页面大小
【发布时间】:2015-09-25 17:02:48
【问题描述】:

我的问题是理论上的。假设我们在 MySQL 数据库中有一个关系数据库表,其中包含数百万行。我们想处理所有行,但我们知道整个表不适合内存。 我们会选择使用通用 SQL 查询遍历记录:

select * from table skip OFFSET limit LIMIT

哪个更好/更快/更便宜(例如 1000 万条记录)

A) 选择小偏移量和大限制,例如在 1000 个步骤中,我们为每个步骤选择 10.000 行)

B) 选择大偏移量和小限制(例如,在 10.000 步中,我们为每个步骤选择 1000 行)?

我知道skip反正很贵,但我不知道选择哪种策略更好。

更新:我想让这个问题技术独立。因此,无论我们使用哪种数据库或使用哪种技术。所以问题是我们如何获得更好的性能:

A) 在一次迭代中读取 更多 个数据,我们有 less 个迭代步骤

B) 在一次迭代中读取 less 个数据,我们有 更多 个迭代步骤?

【问题讨论】:

    标签: algorithm loops pagination


    【解决方案1】:

    没有。对于如此大的结果,使用 HANDLER 是一种更好的阅读方式。 这是一种非常快速的阅读方式。

    HANDLER table_name OPEN;
    HANDLER table_name READ  FIRST;
    HANDLER table_name READ NEXT;  
    

    MySQL / MariaDB HANDLER 手册

    https://mariadb.com/kb/en/mariadb/handler-commands/

    【讨论】:

    • 感谢您的回复,但 MySQL 只是一个示例。我更新了问题,使其独立于技术。
    猜你喜欢
    • 2011-03-23
    • 1970-01-01
    • 2021-03-13
    • 2013-04-29
    • 2015-02-28
    • 2021-03-20
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多