MySQL 中如何进行 SQL 调优?

Sherwin.Wei Lv7

MySQL 中如何进行 SQL 调优?

回答重点

平时进行 SQL 调优,主要是通过观察慢 SQL,然后利用 explain 分析查询语句的执行计划,识别性能瓶颈,优化查询语句。

1)合理设计索引,利用联合索引进行覆盖索引的优化,避免回表的发生,减少一次查询和随机 I/O

2)避免 SELECT * ,只查询必要的字段

3)避免在 SQL 中进行函数计算等操作,使得无法命中索引

4)避免使用 %LIKE,导致全表扫描

5)注意联合索引需满足最左匹配原则

6)不要对无索引字段进行排序操作

7)连表查询需要注意不同字段的字符集是否一致,否则也会导致全表扫描

除此之外,还可以利用缓存来优化,一些变化少或者访问频繁的数据设置到缓存中,减轻数据库的压力,提升查询的效率。

还可以通过业务来优化,例如少展示一些不必要的字段,减少多表查询的情况,将列表查询替换成分页分批查询等等。

扩展知识

慢 SQL

这是 MySQL 自带的日志记录,默认关闭,通过 set global slow_query_log = 'ON' 即可开启。

通过 show variables like '%slow_query_log%' 即可查询当前慢日志是否开启,以及存储的路径。

通过 set global long_query_time = 3 即可设置慢 SQL 的阈值,3 就是 3 秒,当一个 SQL 执行的时间操作 3 秒,就会被记录到慢日志中。

explain

具体 explain 的分析,可以看:如何使用 MySQL 的 EXPLAIN 语句进行查询分析?

Comments
On this page
MySQL 中如何进行 SQL 调优?