mysql sqlstate 22018_mysql 开发进阶篇系列 2 SQL优化(explain分析)

接着上一篇sql优化来说

1. 定位执行效率较低的sql 语句

通过两种方式可以定位出效率较低的sql 语句。

(1) 通过上篇讲的慢日志定位,在mysqld里写一个包含所有执行时间超过 long_query_time秒的sql语句的日志文件,后面具体介绍。

(2) 通过show processlist 实时定位线程状态,是否锁表等,下面简单演示下show processlist:

先模拟会话1表锁,再会话2更新该表city的数据,由于会话1表锁没有释放,会话2更新会一直会等待尝试去获取更新锁,再通过show processlist查看

--会话 1获取city 表锁

LOCK TABLE city READ;--会话2更新city表

UPDATE city SET citycode='001'

查看发现: 状态列中找到waiting for table metadata lock(等待 table元数据锁),当前线程的info 信息 如下所示:

a2b585c753e4629f58ca49c56e542b17.png

2. 通过explain 来分析sql执行计划

通过上篇的慢日志定位和processlist 找出效率低的sql语句后,可以通过explain或者desc命令获取mysql 如何执行查询语句的信息。

--查看执行计划(二种方式一样)

DESC SELECT LedRecycleInfoLogID FROM LedLogInfo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值