1
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