Postgresql 在Postgres中高效检索分页的所有行

Postgresql 在Postgres中高效检索分页的所有行,postgresql,pagination,offset,sql-limit,Postgresql,Pagination,Offset,Sql Limit,我的应用程序需要从Postgres表中检索所有行,但是,由于未知的约束,我必须限制从一个查询返回的结果的数量,比如限制l=100000 因此,我想到了一个带有偏移和限制的分页,这是一个立即的解决方案。然而,他说: OFFSET子句跳过的行仍然必须在内部计算 服务器;因此,较大的偏移量可能是低效的 因此,如果我通过分页[1,l],[l+1,2*l],…,[pages\u count-1*l+1,pages\u count*l]请求pages\u count*l行,实际上pages\u count*

我的应用程序需要从Postgres表中检索所有行,但是,由于未知的约束,我必须限制从一个查询返回的结果的数量,比如限制l=100000

因此,我想到了一个带有偏移和限制的分页,这是一个立即的解决方案。然而,他说:

OFFSET子句跳过的行仍然必须在内部计算 服务器;因此,较大的偏移量可能是低效的

因此,如果我通过分页[1,l],[l+1,2*l],…,[pages\u count-1*l+1,pages\u count*l]请求pages\u count*l行,实际上pages\u count*l+1*pages\u count*l/2即Osqrpages\u count*l行将被读取

for page_number := 0; page_number < pages_count; page_number++ {
 retrieve_and_store("select amount from transactions order by time offset $page_number limit 100000")
}

或者Postgres是否缓存最近查询中的行,或者什么是检索所有page\u count*l行的有效方法?

btw:你为什么使用过时的手册?@a\u horse\u,没有名字,这是谷歌搜索结果中显示的手册。@david:谷歌搜索结果中出现了很多。大部分都不是你真正想要的。除非你想对过时的Postgres 8.3进行说明,否则请使用当前的手册。至于你的问题:视情况而定。你的桌子是只读的吗?如果没有,写模式是什么,分页标准是什么?@ErwinBrandstetter我只能以只读方式访问数据库。根据@a_horse_和_no_name的链接,现在我正在使用fetch next查询。