一、考点
1、查找分析查询速度慢的原因
1)分析SQL查询慢的方法
- 记录 慢查询日志;
- 分析查询日志,不要直接打开慢查询日志进行分析,这样比较浪费时间和精力,可以使用
pt-query-digest
工具 进行分析。
2)使用 show profile
set profiling = 1
; 开启,服务器上执行的所有语句会检测消耗的时间,存到临时表中。show profiles
;show profile for query
临时表ID;
3)使用 show status
show status
会返回一些计数器,show global status
查看服务器级别的所有计数;- 有时根据这些计数,可以猜测出哪些操作代价较高或者消耗时间多。
4)使用 show processlist
- 观察是否有大量线程处于不正常的状态或者特征。
5)使用 explain
- 分析单条SQL语句。
2、优化查询过程中的数据访问
1)访问数据太多导致性能下降
不要使用
SELECT *
。
2)确定应用程序是否在检索大量超过需要的数据,可能是太多行或列
如:一个应用程序在某个步骤下,只需要获取到 10列中的两列的50条数据,但是在查询的时候,特别贪婪的把所有的数据所有列的内容全部都查询了出来,这样本身就是不合理的,所以我们要确定该情况是否存在。
3)确认 MySQL服务器是否在分析大量不必要的数据行
4)避免使用如下SQL语句
- 查询不需要的记录,使用
limit
解决;- 多表关联返回全部列,指定
A.id
,A.name
,B.age
;- 总是取出全部列,
SELECT *
会让优化器无法完成索引覆