概念:MySQL中的执行计划指通过explain语法分析SQL语句
语法:explain SQL语句\G
说明:通过explain分析分析指定SQL语句(注:\G表示格式化打印,后面不要加分号)
使用explain执行计划分析:
select_type - 查询类型
table - 表名
type - 连接类型
possible_keys - 可能用到的索引
key - 实际用到索引
key_len - 索引长度
rows - 检索了多少行数据
-> 分析:查询类型(select_type)
-> 分析:连接所使用的类型(type)
这一列的常见值有:const、all、range、system、index
最好的是 system 一般在表中只有一行记录的或者查询系统表的时候出现
其次就是 const 一般在使用主键索引的时候会出现
其其次 range 一般在做范围查询的时候会使用,如:...where id < 100
index 代表可以使用索引做一些优化,一般在查询表的总行数的时候出现
all 一般使用不上索引的时候出现
ref 意思是指 通过索引列,可以直接引用到某些数据行
eq_ref 意思是指 通过索引列,可以直接引用某1行数据
-> 分析:额外项(extra)
index: 是指用到了索引覆盖,效率非常高
using where 是指光靠索引定位不了,还得where判断一下
extra 中出现以下 2 项意味着 MYSQL 根本不能使用索引,效率会受到重大影响。应尽可能对此进行优化
using temporary
表示 MySQL 在对查询结果排序时使用临时表。常见于排序 order by 和分组查询 group by
using filesort
表示 MySQL 会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容
可能在内存或者磁盘上进行排序
MySQL 中无法利用索引完成的排序操作称为“文件排序”
网友评论