优化分页查询

优化分页查询

一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 limit 2000000,10 ,此时需要MySQL排序前2000010 记录,仅仅返回2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大 。
fenye1.png

1 优化思路一

在索引上完成排序分页操作,最后根据主键关联回原表查询所需要的其他列内容。

select t.* from tb_user t inner join (select id from tb\_user order by id limit 999910,10) a on t.id=a.id;

fenye2.png

2 优化思路二

该方案适用于主键自增的表,可以把Limit 查询转换成某个位置的查询 。

select * from tb_user where id > 999910 limit 10;

fenye3.png

添加新评论