二十七、查询为什么慢

235 阅读1分钟

一、MySQL 的查询流程

想要优化 MySQL 查询,就必须要弄清楚 MySQL 在执行查询的时候到底做了哪些事,包含哪些子任务。每一项子任务都可能会导致查询缓慢。MySQL 执行查询的流程如下:

  1. 接收查询 SQL;
  2. 查询缓存;
  3. 解析 SQL 语句;
  4. 预处理器;
  5. 查询优化器:进行优化处理,生成最优执行计划;
  6. 调用存储引擎进行查询;
  7. 返回结果。

二、导致查询慢的因素

从 MySQL 的查询流程可以了解到,查询需要在不同的地方花费时间,包括网络、CPU运算、生成统计信息和执行计划、锁等待等,这里每一个环节出问题都会导致查询缓慢。常见因素如下表:

序号查询慢的因素
1网络速度慢
2内存不足
3I/O吞吐
4没有索引
5锁等待
6表设计不合理
7数据量大
8SQL 语句不规范
9返回不必要的行和列