limit优化
一个常见又非常头疼的问题就是limit 2000000,10。此时需要MySQL排序前2000010记录,仅仅返回2000000(不包含)~2000010(包含)的记录,其他 记录丢弃,查询排序的代价非常大
解决:覆盖索引+子查询的方式来优化
优化思路:一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询的方式进行优化
例如如下
原语句:select * from tb_sku limit 1000000,10;
优化后:select s.* from tb_sku as s,(select id from tb_sku limit 1000000,10) as a where s.id = a.id;
查询速度大概能缩短一半时间