首页 > 解决方案 > 带有 OFFSET 的 PostgreSQL LIMIT 不能超过 100000

问题描述

我正在为我的项目使用 postgres (9.6) docker。加载大量数据后,例如 234453,我需要使用 limit 和 offset 将数据切割成块。但是我观察到我的查询超出了 100000 的限制。就像我在给出限制 100000 时可以剪切一样。但是当我使用 120000 时,它就挂起。

加载的数据:234453 行查询:这正在工作:docker exec -it pg_1 psql -P pager postgres postgres -t -c“从 schema1.table1 中删除 col_id 不在(从 schema1.table1 限制 100000 偏移 1 中选择 col_id)”

这是挂了: docker exec -it pg_1 psql -P pager postgres postgres -t -c “从 schema1.table1 中删除 col_id 不在(从 schema1.table1 限制 120000 偏移 1 中选择 col_id)”

下一次削减应该是从 100001 到 230000,类似这样。

你能告诉我吗,我该怎么做?或者我是否做错了什么?

谢谢, 苏文杜

标签: sqldatabasepostgresqlpaginationoffset

解决方案


Offset Pagination只有当OFFSET值相对较小时才有效。

否则,即使您索引排序和过滤条件,数据库也必须扫描索引并计算条目,直到它达到正确的OFFSET值。对于非常大的值,这意味着几乎完全扫描了索引。

所以,你最好使用Keyset Pagination.


推荐阅读