MYSQL查看执行计划
作者:网络转载 发布时间:[ 2015/1/14 11:12:18 ] 推荐标签:软件开发 数据库 MySQL
3、 对于非select语句查看执行计划
在实际的工作中也经常需要查看一些诸如update、delete的执行计划,(mysql5.6的版本已经支持直接查看)但是这时候并不能直接通过explain来进行查看,而需要通过改写语句进行查看执行计划;
在一个生产数据库的慢查询日志发现有条语句如下:
Count: 13 Time=73.44s (954s) Lock=0.00s (0s) Rows=0.0 (0), ipos[ipos]@2hosts
update ipos_zdjhd m,ipos_zdjhdtj tj set m.qr=N,m.qrrq='S',m.qrr='S',tj.qr=N,tj.qrrq='S'
where m.ydjh='S' and tj.djbh='S'
可以改写如下:
Explain Select m.qr , m.qrr , tj.qr , tj.qrrq from ipos_zdjhd m,ipos_zdjhdtj tj where m.ydjh='17233' and tj.djbh='48632';
马上可以发现ipos_zdjhd表进行了全表扫描,而ipos_zdjhd表有1076971行的数据,所以整个update的操作肯定是一个很慢的过程,经过和开发人员沟通后,在ipos_zdjhd表增加相应的索引便让整个过程提升了500倍。
小结:执行计划加上慢查询日志组成了mysql调优过程的一组调优利器,当数据库稳定过后参数的调优是很少的一部分,80%以上的调优都会是SQL调优。

sales@spasvo.com