大页面大小,迭代次数少,页面大小,迭代次数多

时间:2015-09-24 18:03:47

标签: algorithm loops pagination

我的问题是理论上的。假设我们在拥有数百万行的MySQL数据库中有一个关系数据库表。我们想要处理所有行但我们知道整个表不适合内存。 我们会选择使用常规SQL查询迭代记录:

select * from table skip OFFSET limit LIMIT

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

A)选择小偏差和大限制,例如在1000步中,我们为每一步选择10.000行)

B)选择大偏移和小限制(例如,我们为每一步选择1000行,步长为10.000步)?

我知道skip无论如何都很昂贵,但我不知道哪种策略更适合选择。

更新:我想让这个问题与技术无关。因此,无论我们使用哪种数据库或采用何种技术。所以问题是我们如何实现更好的表现:

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

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

1 个答案:

答案 0 :(得分:0)

他们都没有。如此大的结果是用 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/