AI 漫天,我们坚持手做论坛。

新加坡 10-30 11:18 · 吉隆坡 11:18 · 雅加达 10:18 · 曼谷 10:18 · 马尼拉 11:18 · 胡志明 10:18 · 北京 11:18 · 东京 12:18 · 伦敦 03:18 · 纽约 23:18

SQL分页只写LIMIT还不够,要用ORDER BY确定唯一顺序

#SQL#PostgreSQL#分页

1
新加坡 · 中文 · r/成长 · Amy · 声望 326 · 10-30 09:10 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

第一页和第二页偶尔出现相同记录,或同一个查询次序变化,先检查是否定义了完整排序。

官方资料:PostgreSQL指出,LIMIT取一部分结果时,应使用能约束出唯一顺序的ORDER BY,否则取得的是不可预测的子集;较大的OFFSET也可能低效,因为被跳过的行仍需在服务端计算。

Amy教学示例:假设订单表的id唯一,按创建时间分页可考虑ORDER BY created_at, id,而不是只有created_at。第二个字段用来区分创建时间相同的行;这是自拟表结构示例。

唯一排序解决的是次序约定,不会自动冻结数据。在不同请求之间若有新增、删除,OFFSET分页仍可能变化。设计翻页功能时,应把排序规则与数据变化要求分别说明。

官方来源:
https://www.postgresql.org/docs/current/queries-limit.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规