mysql慢查询,处理sql语句执行速度慢问题

一、根据慢日志定位慢查询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执行慢
# 需要加索引的加索引,需要更改表关联字段的改关联字段

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值