我的问题是理论上的。假设我们在拥有数百万行的MySQL数据库中有一个关系数据库表。我们想要处理所有行但我们知道整个表不适合内存。 我们会选择使用常规SQL查询迭代记录:
select * from table skip OFFSET limit LIMIT
哪个更好/更快/更便宜(例如1000万条记录)
A)选择小偏差和大限制,例如在1000步中,我们为每一步选择10.000行)
B)选择大偏移和小限制(例如,我们为每一步选择1000行,步长为10.000步)?
我知道skip
无论如何都很昂贵,但我不知道哪种策略更适合选择。
更新:我想让这个问题与技术无关。因此,无论我们使用哪种数据库或采用何种技术。所以问题是我们如何实现更好的表现:
A)在一次迭代中读取更多数据,我们有更少的迭代步骤
B)在一次迭代中读取 less 数据,我们有更多迭代步骤?
答案 0 :(得分:0)
他们都没有。如此大的结果是用 HANDLER 读取它的更好方法。 这是一种非常快速的阅读方式。
HANDLER table_name OPEN;
HANDLER table_name READ FIRST;
HANDLER table_name READ NEXT;
MySQL / MariaDB HANDLER手册