# 优化分页查询
一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 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)
- 鸣谢
- 安装和配置
- Mac 安装MySql 8
- 授权用户远程登录
- MySql 命令加入系统命令
- 启动Mysql
- 索引
- 索引介绍与优势
- 索引结构
- 索引操作语法
- 索引设计原则
- 存储引擎
- MySql的体系解构
- 存储引擎
- 各种存储引擎特性
- 存储引擎的选择
- 优化SQL
- 查看SQL执行效率
- 定为低效率执行SQL
- explain分析执行计划
- show profile分析SQL
- tract 分析优化器执行计划
- 索引的使用
- 验证索引可以提高查询效率
- 索引使用
- 查看索引的使用情况
- SQL优化
- 大批量插入数据
- 优化insert语句
- 优化order by语句
- 优化group by的优化
- 优化嵌套索引
- 优化OR条件
- 优化分页查询
- 使用SQL提示