在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。
我们一起先看看执行limit分页查询耗时对比:
通过测试我们会看到,越往后,分页查询效率越低,这就是分页查询的问题所在。
因为,当在进行分页查询时,如果执行 limit 2000000,10
,此时需要
MySQL
排序前
2000010
记录,仅仅返回 2000000 - 2000010
的记录,其他记录丢弃,查询排序的代价非常大 。
优化思路
:
一般分页查询时,通过创建 覆盖索引 能够比较好地提高性能,可以通过覆盖索引加子查
询形式进行优化。
explain
select
*
from
tb_sku t , (
select
id
from
tb_sku
order by
id
limit
2000000
,
10
) a
where
t
.id
= a
.id
;