概述游标分页基于稳定排序键(如 `created_at,id`)进行增量遍历,避免偏移分页的重复与遗漏问题。结合去重集合与终止条件提升一致性。关键实践与参数排序键: `created_at DESC, id DESC` 稳定唯一- 游标签记: `cursor=base64(created_atid)`终止条件: 到达最早记录或空结果防重: 客户端去重集合或服务端返回唯一键示例/配置/实现SELECT id, created_at FROM articles WHERE (created_at, id) < (to_timestamp($created_at), $id) ORDER BY created_at DESC, id DESC LIMIT 20; function encodeCursor(row) { return Buffer.from(`${row.created_at.toISOString()}|${row.id}`).toString('base64') } 验证无重复: 连续请求游标分页结果不出现重复记录无遗漏: 插入新记录后仍能完整遍历历史一致排序: 排序稳定且与游标匹配兼容性: 游标可在不同客户端解码与传递注意事项游标需包含足够区分度以唯一定位客户端需维护去重集合在跨页合并时使用时间相同需二级键确保稳定排序与缓存与变更通知协同

发表评论 取消回复