mysql 慢查询 定位过程,和order by有关

最近有同事反馈mysql 主备同步告警超时比较多,首先使用

show processlist;

看了下,有很多查询语句状态显示Sending data,网上查阅了相关资料,提示"Sending data" 状态是指mysql处理结果并回传给客户端的阶段。查询语句大概长这样

select * from table where t1 <= now() and t2 >= now() and v1 = 0 and v2 = 1 order by id asc limit 100

 使用explain 命令看了下这条语句,显示使用了主键索引,我觉得这里主键索引主要用在order by里面排序,根据业务逻辑看了下,这里排序是没有必要的,于是去掉了order by id asc,重新explain 了一下,使用了t1和t2联合索引,查询速度也从原来0.7s降到了0.18s,降了大概75%。效果还是挺明显。

对于类似的问题,分析思路大概都是先看下语句卡在哪里,可以通过show processlist,然后对语句进行优化,使用explain查看使用到哪些索引等等。

 

================================================================================================

Linux应用程序、内核、驱动、后台开发交流讨论群(745510310),感兴趣的同学可以加群讨论、交流、资料查找等,前进的道路上,你不是一个人奥^_^。...

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值