1、浅析查询速度
2、慢查询基础:优化访问数据
2.1、是否向数据库请求了不需要的数据,典型的有:
- 查询不需要的记录;
- 多表关联时返回全部列;
- 总是取出全部列;
- 重复查询相同的数据;
2.2、MySQL是否在扫描额外的记录
- 响应时间
- 扫描的行数和返回的行数
- 扫描的行数和访问的类型
3、重构查询的方式
3.1、考虑有必要的将一个复杂查询分成多个简单的查询
3.2、切分查询
3.3、分解关联查询
4、查询执行的基础
先看一下MySQL执行查询的过程:
接下来细看上面的步骤;
4.1、MySQL客户端/服务器通信协议
查询状态:
4.2、查询缓存:通过哈希查找实现的;
4.3、查询优化处理
下面是一些MySQL能够处理的优化类型:
将外连接转化成内连接、使用等价变换规则、优化COUNT()MIN()MAX()、预估并转化为常数表达式、覆盖索引扫描、子查询优化、提前终止查询、等值查询、列表IN()的比较;
4.4、查询执行引擎
4.5、返回结果给客户端
5、查询优化器的局限性
这一小部分整体来说讲的比较简单,大体上看看就好,部分细节以后再次阅读的时候自行补充;
6、优化特定类型的查询
6.1、优化COUNT()查询
6.2、优化关联查询
6.3、优化子查询
6.4、优化GROUP BY和DISTINCT
6.5、优化UNION查询
本章总结