一、MySQL 的查询流程
想要优化 MySQL 查询,就必须要弄清楚 MySQL 在执行查询的时候到底做了哪些事,包含哪些子任务。每一项子任务都可能会导致查询缓慢。MySQL 执行查询的流程如下:
- 接收查询 SQL;
- 查询缓存;
- 解析 SQL 语句;
- 预处理器;
- 查询优化器:进行优化处理,生成最优执行计划;
- 调用存储引擎进行查询;
- 返回结果。
二、导致查询慢的因素
从 MySQL 的查询流程可以了解到,查询需要在不同的地方花费时间,包括网络、CPU运算、生成统计信息和执行计划、锁等待等,这里每一个环节出问题都会导致查询缓慢。常见因素如下表: