更新时间:2023-05-08 来源:黑马程序员 浏览量:
在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。执行limit分页查询耗时对比如下:
因为,当在进行分页查询时,如果执行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的时候,走的覆盖索引,所以效率可以提升很多。