一、如何发现需要优化的SQL
主要使用MySQL的慢查日志对有效率问题的SQL进行监控
第一步:启动慢查日志的监控
- 打开开关,将未使用索引的查询记录到慢查日志中
- 设置查询时间,当查询时间大于这个值,就记录到慢查日志中
- 打开开关,启动慢查日志监控
第二步:使用慢查日志分析工具比如mysqldumpslow或者pt-query-digest来 查看有执行效率问题的SQL
二、如何对某条SQL优化
- 通过explain查看SQL的执行计划:
一是执行计划中SQL是走索引还是全表扫描。如select max 或者select sum之类的,我们可以针对max列创建索引,这样就可以直接走索引,而不用扫描表。
二是看执行计划中是否有用到临时表(比如子查询),或者文件排序(比如group by或者Order by,没有用到索引)。
- 子查询的优化。一般将子查询优化为join查询,但在优化时需要注意关联间是否有一对多的关系,需要注意重复数据。