海量数据深分页优化:放弃 LIMIT OFFSET,游标分页让第 100 万页依然飞快!
在处理海量数据时,分页查询是一个非常常见的需求。然而,当数据量达到百万级甚至千万级时,传统的 LIMIT OFFSET 分页方式会变得越来越慢,尤其是在访问后面的页码时。 第 1 页:很快 第 100 页:有点慢 第 10000 页:非常慢 第 100 万页:几乎无法响应 今天,我们来探讨如何通过**游标分页(Keyset Pagination)**技术,让深分页查询变得飞快。 问题背景 LIMIT OFFSET 的性能问题 -- 查询第 1000000 页,每页 10 条 SELECT id, name, amount, create_time FROM orders ORDER BY create_time DESC, id DESC LIMIT 10 OFFSET 9999990; 执行过程分析: ┌─────────────────────────────────────────────────────────────┐ │ LIMIT OFFSET 执行过程: │ │ │ │ 1. MySQL 需要扫描前 10000000 条记录 │ │ 2. 然后跳过前 999999....