想要优化 MySQL 查询,就必须要弄清楚 MySQL 在执行查询的时候到底做了哪些事,包含哪些子任务。每一项子任务都可能会导致查询缓慢。MySQL 执行查询的流程如下:
从 MySQL 的查询流程可以了解到,查询需要在不同的地方花费时间,包括网络、CPU运算、生成统计信息和执行计划、锁等待等,这里每一个环节出问题都会导致查询缓慢。常见因素如下表:
序号 | 查询慢的因素 |
---|---|
1 | 网络速度慢 |
2 | 内存不足 |
3 | I/O吞吐 |
4 | 没有索引 |
5 | 锁等待 |
6 | 表设计不合理 |
7 | 数据量大 |
8 | SQL 语句不规范 |
9 | 返回不必要的行和列 |