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查询

本章总结

本文深入探讨了MySQL查询速度的优化,包括避免请求不必要的数据、减少扫描的行数、重构复杂查询以及理解查询执行过程。重点讨论了优化关联查询、COUNT()操作、子查询和GROUP BY/DISTINCT的方法,旨在帮助提升数据库性能和响应时间。
1万+

被折叠的 条评论
为什么被折叠?



