我有一个相互关联的条目的大表(太大而不能简单地查询它们并将它们分组)。我想浏览它们,但我想确保我的所有组都包含所有相关条目,并且用于生成这些组的总行数有限。这些组的大小不同,因此简单地限制返回的组数并不能保证一个小到足以处理的组。
在伪代码中,给我所有可以使用不超过N行生成的完整组(使用GROUP BY)。然后我需要处理下一个“页面”(使用OFFSET?)。我当前查询一次处理所有行(在大表上花费太长时间)看起来像这样:
select addressresult->'matchElements' as match,
addressresult->'foundElements'->'element0'->>'type' as type,
array_agg(id) as ids,
count(id) as items
from address
group by match, type
having count(id) >= 5;