5.4MySQL查询优化考点
2017-10-12 本文已影响14人
followyounger1
![](https://img.haomeiwen.com/i4651473/101c38fa04ffed43.png)
考官考点
查找分析查询速度慢的原因
优化查询过程中的数据访问
游湖长难的查询语句
游湖特定类型的查询语句
分析SQL查询慢的方法
记录慢查询日志
分析查询日志,不要直接打开慢查询日志进行分析,这样比较浪费时间和经理,可以使用pt-query-digest工具进行分析
![](https://img.haomeiwen.com/i4651473/c78787af70fdbc6f.png)
![](https://img.haomeiwen.com/i4651473/29451171b6ba539e.png)
![](https://img.haomeiwen.com/i4651473/801c34a98a081ba4.png)
是作为我们的一个计数器
![](https://img.haomeiwen.com/i4651473/dc8324752b6a31a6.png)
观察不正常的进程
explain,非常重要,他可以帮我们肥西单条语句。
查询的行数等等
![](https://img.haomeiwen.com/i4651473/117d39215dde6add.png)
![](https://img.haomeiwen.com/i4651473/b31a511df872293f.png)
![](https://img.haomeiwen.com/i4651473/41c3dc9e74146146.png)
优化查询过程中的数据访问
访问太多数据导致查询性能下降
确定应用程序是否在检索大量超过需要的数据,可能是太多行或列
避免使用如下SQL语句
查询不需要的记录,使用limit解决
![](https://img.haomeiwen.com/i4651473/793b01b4a5bacf56.png)
重复查询相同的数据,可以缓存数据,下次直接读取缓存。
![](https://img.haomeiwen.com/i4651473/95cc55c61b020e02.png)
比如,我只需要5行数据,但是却扫描了200行数据,,剩下的数据就白扫了。
加索引,就能解决这个问题
![](https://img.haomeiwen.com/i4651473/81f4946e145c8fc1.png)
如果我是第三范式,我经常查 连表查询,我可以把一个表,冗余到另一个表里面。。。
可以用空间来换取我们的时间
![](https://img.haomeiwen.com/i4651473/16173015e94c3f44.png)
![](https://img.haomeiwen.com/i4651473/97e2133f85d05782.png)
![](https://img.haomeiwen.com/i4651473/eadddcd00edfc894.png)
![](https://img.haomeiwen.com/i4651473/7170d5f1146a1378.png)
![](https://img.haomeiwen.com/i4651473/3e293d825ecf4979.png)
![](https://img.haomeiwen.com/i4651473/d25a8c388a858e60.png)
![](https://img.haomeiwen.com/i4651473/728a93109f264549.png)
![](https://img.haomeiwen.com/i4651473/d242a2485793e2e9.png)
所以,不要使用 count(列名)
![](https://img.haomeiwen.com/i4651473/bf7a3b013d30544c.png)
![](https://img.haomeiwen.com/i4651473/95c5d06010b64aac.png)
没有索引,一定要建立索引。
![](https://img.haomeiwen.com/i4651473/19323b63ca0e28ff.png)
![](https://img.haomeiwen.com/i4651473/9fd9447e31343fca.png)
![](https://img.haomeiwen.com/i4651473/16cb667ad6ea0d5a.png)
![](https://img.haomeiwen.com/i4651473/86a6d4613780ae4a.png)
![](https://img.haomeiwen.com/i4651473/4f6eae311c483069.png)
![](https://img.haomeiwen.com/i4651473/c797ec1a4fa5c922.png)
先定位,,那些SQL语句,会比较慢,根据前面的四种方案,
查询日志
show profile
show processlist
show status
explain
先从索引的监督考虑,索引没问题的话,
再从数据访问的角度来分析,
![](https://img.haomeiwen.com/i4651473/8833ebc75f5ad699.png)