一、根据慢日志定位慢查询sql
# 临时开启慢日志(如重启数据库,还会改为默认值off,如需永久改需要修改配置文件)
show variables like '%slow_query_log%' ;(如果查询出的值为off则需要开启慢日志)
set global slow_query_log=on;(开启慢日志)
# 设置1秒以上为慢查询(如重启数据库,还会改为默认值off,如需永久改需要修改配置文件)
show variables like '%long_query_time%' ;(默认值为10,需要将该值改低一些,使得慢sql可以被检测出来)
set global long_query_time=1;
# 查看相关设置是否已经生效
show variables like '%slow_query_log%' ;
# 如果使用图形化工具连接mysql,修改属性值没有生效,则重启该工具再查询慢查询时间
show variables like '%long_query_time%' ;
# 慢查询次数
SHOW STATUS LIKE '%Slow_queries%';
# 调用接口等方法执行慢sql
# 慢查询次数会增加
SHOW STATUS LIKE '%Slow_queries%';
# 查看日志文件文件位置,查看详细信息
show variables like '%slow_query_log_file%' ;
# 根据日志文件位置,找到日志文件并打开
二、使用explain分析sql
#根据日志里查询出的sql,在sql前面加上explain并执行
#例 explain select * from table
当type为index/all 则代表有全表扫描,需要注意是否可以不全表扫描
key表示用了哪个字段作为索引
当extra 为using index则代表走了索引,当extra为using filesort或using temporary时,则需要进行优化
三、修改sql或者尽量让sql走索引
# 分析sql语句,注意表关联的字段是否是索引,如果不是索引,并且表数据量大,则sql执行慢
# 需要加索引的加索引,需要更改表关联字段的改关联字段