工作记录-mysql调优例子

同事跟我反应线上的项目有一个后台列表响应的很慢,我就抽空看了下

列表是由一个ajax从后台取出json数据,所有的开销都是php+mysql,chrome network显示那个请求需要26s的响应。我的第一反应应该是数据量大了mysql查询慢导致。

我记得这个项目配置了慢查询日志,于是

show global variables like '%slow%'    #查看是否开启满查询 

slow_query_log 的值为 on 已经开启了慢查询

show global variables like '%long%'   #查看满查询日志文件在哪里

我看了下慢查询记录,果然记录刚刚的查询,花费时间16s

我复制出该条语句并在本地用备份数据进行分析

explain  sql
工作记录-mysql调优例子_第1张图片
麦库截图20171106115702934.jpg

可以看到该查询影响了2个表分别是2882和1339行,并且没有使用索引。
于是我就给他们的关联字段加上了索引。

ALTER TABLE `smsmsg`
 ADD INDEX `phone` (`phone`);
ALTER TABLE `user`
 ADD INDEX `phone` (`phone`);

结果

最终响应时间缩短到了56ms,再次分析查询语句

工作记录-mysql调优例子_第2张图片
麦库截图20171106115612990.jpg

使用到了索引,并且影响行数只有30和1了!

你可能感兴趣的:(工作记录-mysql调优例子)