方式对照
| 方式 | 示例 | 适用 |
|---|---|---|
| offset | LIMIT 20 OFFSET 100000;MongoDB skip(100000) | 小偏移、需要页码跳转 |
| 键集 | WHERE (ts, id) < (上一页末值) ORDER BY ts DESC, id DESC LIMIT 20 | 顺序翻页、导出 |
| 游标 | MongoDB _id 游标;ES search_after + PIT | 深分页、滚动列表 |
键集分页(SQL)
键集分页(SQL)
-- 第一页
SELECT id, ts, msg FROM events ORDER BY ts DESC, id DESC LIMIT 20;
-- 下一页:用上一页最后一条的 (ts, id) 作为起点
SELECT id, ts, msg FROM events
WHERE (ts, id) < ('2026-10-12 00:00:00', 1001)
ORDER BY ts DESC, id DESC LIMIT 20;排序键组合必须能确定唯一顺序:时间戳加 _id 之类的唯一列兜底,否则边界处会漏行或重复行。