TIP
这个命令对于学习SQL优化就是重中之重了,详细参数介绍可以看这个
原文链接:https://www.cnblogs.com/tufujie/p/9413852.html
我这里就简单介绍几个常用的,需要关注的地方
# 重点关注字段
# type
能达到ref或者range就说明很不错了,如果是all就说明没走索引
# key
看看实际用到的索引键
# key_len
这个可以协助你判断联合索引是否派上用场了,计算方式跟字符集、是否允许为空有关,可以自行百度一下
# Extra
- using index :使用覆盖索引的时候就会出现
- using where:在查找使用索引的情况下,需要回表去查询所需的数据
- using index condition:查找使用了索引,但是需要回表查询数据
- using index & using where:查找使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据
- using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询,常见 group by ; order by(耗能多)
- using filesort:当Query中包含 order by 操作,而且无法利用索引完成的排序操作称为“文件排序”(耗能多)
# 慢查询日志的开启
vi /etc/my.cnf
[mysqld]
slow_query_log=1
slow_query_log_file=/var/lib/mysql/localhost-slow.log
# 阈值3秒
long_query_time=3
可以通过Mysql专用的分析工具mysqldumpslow分析一下
← 回表、索引覆盖、索引下推 最左匹配 →