explain之后会出现这些,一般就只看下面这几个字段
select_type就是查询类型,在我司的业务里基本上用的都是简单查询,在内存中处理逻辑,复杂查询的话排查问题比较麻烦,引起慢查询还会拖累数据库,数据库里还有别的应用的。最多就用一下join,
type的一般会出现all(全表查询)、range(索引的范围查询)、index(索引扫描)。
如果出现index和extra:using index ,代表使用的是覆盖索引。
possible_keys:可能使用到的索引。
key:真正使用到的索引。
rows:预估扫描到了多少行
extra:
distinct:在select部分使用了distinc关键字
Using filesort:当 Extra 中有 Using filesort 时, 表示 MySQL 需额外的排序操作, 不能通过索引顺序达到排序效果. 一般有 Using filesort, 此时建议优化sql,一般会将排序的逻辑放在代码里实现。
Using index
“覆盖索引扫描”, 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 一般这样是比较不错的
Using temporary
查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化.