如何定位并优化慢查询Sql
- 根据慢日志定位慢查询sql
- 使用explain等工具分析sql
- 修改sql或者尽量让sql走索引
根据慢日志定位慢查询sql
-
查询变量
SHOW VARIABLES LIKE '%quer%';
重点关注一下三个变量:
- 查询慢查询数量(本次会话,关闭客户端后重置为0)
SHOW STATUS LIKE '%slow_queries%'; - 打开慢日志(数据库重启后失效)
SET GLOBAL slow_query_log = ON; - 设置1秒为慢查询(数据库重启后失效)
SET GLOBAL long_query_time = 1; - 重新连接数据库
使用explain等工具分析sql
- explain后面加上sql语句
- 关注TYPE、EXTRA字段
2.1 TYPE中出现index或者all,表示全表扫描,需要优化。
2.2 EXTRA中出现Using filesort或者Using temporary,需要优化
修改sql或者尽量让sql走索引
- 使用索引字段进行查询
- 对需要查询的字段创建索引