首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql Explain的主要字段

Mysql Explain的主要字段

作者头像
CaesarChang张旭
发布2022-05-25 11:26:26
1.3K0
发布2022-05-25 11:26:26
举报
文章被收录于专栏:悟道悟道

这个是经典面试题了,所以掌握还是很有必要的哦!

我来解释下含义哦:

再来分别介绍每一个:

1. id  SQL查询中的序列号。         id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行。 2. select_type

3. table         查询的表名。 4. type(重要)显示查询使用了何种类型。         从最好到最差的连接类型依次为: system,const, eq_ref ,ref,fulltext,ref_or_null,index_merge, unique_subquery,index_subquery,range,index,ALL

1、system
表中只有一行数据或者是空表,这是const类型的一个特例。且只能用于myisam和memory表。如果是Innodb引擎表,type列在这个情况通常都是all或者index
2、const
最多只有一行记录匹配。当联合主键或唯一索引的所有字段跟常量值比较时,join类型为const。其他数据库也叫做唯一索引扫描
3、eq_ref
多表join时,对于来自前面表的每一行,在当前表中只能找到一行。这可能是除了system和const之外最好的类型。
当主键或唯一非NULL索引的所有字段都被用作join联接时会使用此类型。
eq_r ef可用于使用’='操作符作比较的索引列。比较的值可以是常量,也可以是使用在此表之前读取的表的列的表达式。
相对于下面的ref区别就是它使用的唯一索引,即主键或唯一索引,而ref使用的是非唯一索引或者普通索引。
eq_ref只能找到一行,而ref能找到多行。
4、ref
对于来自前面表的每一行,在此表的索引中可以匹配到多行。若联接只用到索引的最左前缀或索引不是主键或唯一索引时,
使用ref类型(也就是说,此联接能够匹配多行记录)。ref可用于使用’=‘或’<=>'操作符作比较的索引列。
5、 fulltext
使用全文索引的时候是这个类型。要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引
6、ref_or_null
跟ref类型类似,只是增加了null值的比较。实际用的不多。
SELECT * FROM ref_table WHERE key_column=expr OR key_column IS NULL;
7、index_merge
表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引,官方排序这个在ref_or_null之后,
但是实际上由于要读取多个索引,性能可能大部分时间都不如range
8、unique_subquery
用于where中的in形式子查询,子查询返回不重复值唯一值,可以完全替换子查询,效率更高。
该类型替换了下面形式的IN子查询的ref: value IN (SELECT primary_key FROM single_table WHERE some_expr)
9、index_subquery
该联接类型类似于unique_subquery。适用于非唯一索引,可以返回重复值。
10、range
索引范围查询,常见于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等运算符的查询中。
SELECT * FROM tbl_name
WHERE key_column BETWEEN 10 and 20;
SELECT * FROM tbl_name
WHERE key_column IN (10,20,30);
11、index
索引全表扫描,把索引从头到尾扫一遍。这里包含两种情况:
一种是查询使用了覆盖索引,那么它只需要扫描索引就可以获得数据,这个效率要比全表扫描要快,
12ALl
没有使用索引,全表扫描

12. extra(重要)     EXplain 中的很多额外的信息会在 Extra 字段显示, 常见的有以下几种内容: distinct:在select部分使用了distinc关键字 Using filesort:当 Extra 中有 Using filesort 时,不能通过索引顺序达到排序效果.  Using index “覆盖索引扫描”, 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错 Using temporary 查询有使用临时表, 一般出现于排序, 分组和多表 join 的情况, 查询效率不高, 建议优化.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档