
传统的深分页优化游标分页核心原理是 WHERE id 上一页最后的id 。但 UUID 是随机无序的字符串如果直接用它做比较查出来的数据顺序是乱的会导致分页数据重复或遗漏。怎么优化3种实战方案方案一组合游标分页最推荐无需加字段利用“创建时间 UUID”作为联合排序条件。因为时间是有顺序的而 UUID 保证了同一时间下的唯一性。SQL 示例WHERE (create_time, id) (上一页最后的时间, 上一页最后的UUID) ORDER BY create_time, id LIMIT 10注必须为 create_time 和 id 建立联合索引否则大数据量下依然很慢。方案二延迟关联适合必须跳页的场景先用二级索引查出目标页的主键 ID再回表查全量数据减少回表开销。SQL 示例SELECT * FROM 表名 JOIN (SELECT id FROM 表名 ORDER BY create_time LIMIT 9000000, 10) tmp ON 表名.id tmp.id方案三新增自增序列字段最彻底如果业务允许修改表结构直接加一个自增的 INT/BIGINT 字段如 sequence_id 或雪花算法 ID用这个新字段来做游标分页。总结建议如果不想改表结构用方案一如果允许加字段用方案三如果是后台管理系统必须支持“跳转到第100页”用方案二。