---

title: GraphQL分页:Relay Cursor与Offset对比

keywords:

  • GraphQL
  • Relay
  • Cursor
  • Offset
  • 分页

description: 对比 Relay Cursor 与传统 Offset 分页的正确用法与约束,指导在变更频繁的数据集上选择稳定的分页策略。

categories:

  • 文章资讯
  • 技术教程

---

GraphQL分页:Relay Cursor与Offset对比

概览

  • Cursor 基于稳定排序字段生成不重复位置指针;Offset 依赖固定顺序下的行偏移。
  • Relay Connection 规范定义 edgespageInfofirst/after 等语义,适合数据持续变更的场景。

技术参数(已验证)

  • Relay Connection 规范:edges{node,cursor}pageInfo{hasNextPage,hasPreviousPage,startCursor,endCursor}
  • 稳定排序:使用复合键如 created_at,id 保证新增/删除不会导致游标漂移;保持全局唯一与确定性顺序。
  • 游标编码:常见做法 Base64;包含排序键及方向;前后向分页分别用 after/beforefirst/last
  • 查询性能:Offset 在大型表上会触发 OFFSET N 扫描与回表;Cursor 可利用索引范围扫描、覆盖索引,降低延迟。
  • 读写一致性:游标分页建议在只读视图或时间点快照下执行,避免跨页重复或遗漏。

实战清单

  • 优先选择游标分页并显式稳定排序;同时提供前后向分页能力。
  • 为游标字段建立联合索引;返回完整 pageInfo 以利前端导航。
  • 对高并发写入场景启用时间点快照或乐观并发控制,保障跨页一致性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部