📚 分类
mysql
🕵🏽‍♀️ 问题描述
mysql超大分页怎么处理?
👨‍🏫 问题讲解
❒ 在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。

✔ 我们一起来看看执行limit分页查询耗时对比:

mysql:SELECT * FROM blog_post WHERE like_count › 0 LIMIT 0,10; (10 rows in set 0.00 sec)
mysql:SELECT * FROM blog_post WHERE like_count › 0 LIMIT 9000000,10; (10 rows in set 11.05 sec)

✔ 因为,当在进行分页查询时,如果执行limit 9000000,10,此时需要MySQL排序前9000010 记录,仅仅返回9000000 - 9000010的记录,其他记录丢弃,查询排序的代价非常大。

✔ 优化后:SELECT * FROM blog_post t, (SELECT id FROM blog_post WHERE like_count › 0 LIMIT 9000000,10) a WHERE t.id = a.id;
🏳️‍🌈 问题总结
造成原因: 在数据量比较大时,limit分页查询,需要对数据进行排序,效率低。
解决方案: 覆盖索引 + 子查询
📖 问题信息
📈 浏览次数:26 | 📅 更新时间:2025-12-04 01:48:17
📦 创建信息
🏷️ ID:32 | 📅 创建时间:2024-10-05 04:16:28