🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 优化分页查询 一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 limit 2000000,10 ,此时需要MySQL排序前2000010 记录,仅仅返回2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大 。 ![](https://img.kancloud.cn/36/48/36484593c135806ab0b59af8d44077f7_2856x470.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; ~~~ ![](https://img.kancloud.cn/47/a4/47a4b653dea8d4082932fbc87df03ed6_2824x484.png) ## 2 优化思路二 该方案适用于主键自增的表,可以把Limit 查询转换成某个位置的查询 。 ~~~ select * from tb_user where id > 999910 limit 10; ~~~ ![](https://img.kancloud.cn/21/db/21dbae24554a49f806087bd70c2f1dc9_2844x482.png)