在数据库和接口开发中,Cursor(游标)分页和**传统分页(Offset 分页)**是两种常见的数据获取方式,它们的核心区别如下:
也称为 页码分页 或 基于偏移量的分页。
通过 OFFSET 和 LIMIT 获取某一页数据:
SELECT * FROM orders
ORDER BY id
LIMIT 10 OFFSET 20;
表示跳过前 20 条,取 10 条(第 3 页)。
也称为 基于游标的分页(Cursor-based Pagination)。
使用上一次结果的最后一条数据的某个字段值作为“游标”:
SELECT * FROM orders
WHERE id > 100
ORDER BY id
LIMIT 10;
id = 100 就是 cursor。
created_at)created_at + id)| 对比项 | Offset 分页 | Cursor 分页 |
|---|---|---|
| 是否支持跳页 | ✅ 支持 | ❌ 一般不支持 |
| 性能 | 随页数下降 | 稳定 |
| 数据一致性 | 易错位 | 高 |
| 实现复杂度 | 低 | 中 |
| 适用场景 | 后台管理 | Feed、无限滚动 |
如果你愿意,我也可以给你 Spring / MyBatis / Elasticsearch / GraphQL 中的具体实现示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。