首页常见问题正文

怎样对MySQL的limit分页查询进行优化?

更新时间:2023-05-08 来源:黑马程序员 浏览量:

在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。执行limit分页查询耗时对比如下:
1683530047535_101.png

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

优化思路:一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化

select*
from tb_sku t.
   (select id from tb_sku order by id limit 9000000,10) a
where thg = a.id;

先分页查询数据的同字段,确定了id之后,再用子查询来过滤,只查询这个试列表中的数据,因为查询id的时候,走的覆盖索引,所以效率可以提升很多。


分享到:
在线咨询 我要报名
和我们在线交谈!