目录

当分页成为性能杀手
你是否遇到过这样的场景?
- 用户浏览电商订单时,翻到第100页需要等待8秒
- 后台管理系统查询日志,每次翻页都触发数据库CPU飙升
- 移动端APP瀑布流加载,越往下滑动卡顿越明显
根本原因:传统的LIMIT offset, size分页方式在大数据量下会产生全表扫描+临时排序,当offset值达到10万量级时,MySQL需要遍历并丢弃前10万行数据才能返回结果。今天给大家分享游标分页与覆盖索引两大核心技术,实测将百万级数据分页耗时从秒级降至毫秒级!
一、传统分页的性能困境
1.1 问题复现
典型的慢查询示例:
SELECT * FROM order_history
WHERE user_id = 100
ORDER BY create_time DESC
LIMIT 100000, 10;
执行计划分析:
type=ALL(全表扫描)rows=100010(实际扫描行数)Extra=Using filesort(文件排序)
1.2 性能损耗原理
三级性能瓶颈:
- IO成本:扫描全部索引树或数据页
- CPU成本:排序丢弃前N条数据
- 网络成本:传输冗余数据
二、游标分页:像翻书一样连续翻页
2.1 核心原理
利用有序唯一值作为定位锚点,避免遍历历史数据:
-- 下一页
SELECT * F

6582

被折叠的 条评论
为什么被折叠?



