一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 limit 2000000,10 ,此时需要MySQL排序前2000010 记录,仅仅返回2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大 。
在索引上完成排序分页操作,最后根据主键关联回原表查询所需要的其他列内容。
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;
该方案适用于主键自增的表,可以把Limit 查询转换成某个位置的查询 。
select * from tb_user where id > 999910 limit 10;
内容来源于网络,如有侵权,请联系作者删除!