SpringBoot + 分页深度优化 + 游标+时间戳:千万级数据翻到第 10 万页依然毫秒响应
导语 在大数据量的系统中,分页查询是一个常见的需求。传统的基于 OFFSET 和 LIMIT 的分页方式在处理大数据量时会遇到性能瓶颈,特别是当翻到较深的页面时,查询速度会变得非常慢。本文将介绍一种基于游标和时间戳的分页优化方案,通过避免使用 OFFSET,实现千万级数据的高效分页,即使翻到第 10 万页依然能保持毫秒级响应。 一、传统分页的性能问题 1.1 传统分页的实现 基于 OFFSET 和 LIMIT 的分页 -- 第 1 页,每页 10 条 SELECT * FROM users ORDER BY id DESC LIMIT 10 OFFSET 0; -- 第 10 万页,每页 10 条 SELECT * FROM users ORDER BY id DESC LIMIT 10 OFFSET 999990; 1.2 性能问题分析 1. 数据扫描 当 OFFSET 很大时,数据库需要扫描大量数据 例如,OFFSET 999990 时,数据库需要扫描 100 万条数据才能返回 10 条结果 随着页码的增加,扫描的数据量线性增长 2. 索引使用 虽然使用了索引,但 OFFS....