文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【MySQL】EXPLAIN 语句 各字段 详解

2023-10-27 07:19

关注

EXPLAIN 语句 概貌

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EXPLAIN 各字段详解

1. select_type值为:

  1. PRIMARY

  2. UNION

  3. UNION RESULT:MySQL选择使用临时表来完成UNION查询的去重工作。

  4. SUBQUERY: 如果包含子查询的查询语句,不能转为对应的半连接形式,并且该子查询是不相关子查询,而且查询优化器决定采用将该子查询物化的方案来执行该子查询时,则,selct_type的值为SUBQUERY

  5. DEPENDENT SUBQUERY : 如果包含子查询的查询语句,不能转为对应的半连接形式,并且该子查询是相关子查询,则,selct_type的值为DEPENDENT SUBQUERY

  6. DEPENDENT UNION

  7. DERIVED: 在包含派生表的查询中,以物化派生表的方式执行查询。

  8. MATERIALIZED: 当查询优化器在执行包含子查询的语句时,选择将子查询物化之后与外层查询进行连接,则,该子查询对应的selct_type的值为MATERIALIZED

  9. UNCACHEABLE SUBQUERY:不常用

  10. UNCACHEABLE UNION: 不常用

2. type值(表明访问方法)

完整的访问方法有:system, const, eq_ref, ref, fulltext, ref_or_null, index_merge, unique_subquery, index_subquery, range, index, ALL等。

  1. system:当表中只有一条记录,且,该表使用的存储引擎(比如,MyISAM、MEMORY)的统计数据是精确的,那么对该表的访问方法就是system。

  2. const : 当我们根据主键或者唯一二级索引列与常数进行等值匹配时,对单表的访问方法就是const。如: EXPLAIN SELECT * FROM s1 WHERE id = 5;

  3. eq_ref : 如果被驱动表是通过主键or 不允许存储 NULL 值的唯一二级索引列等值匹配的方式进行访问的(如果该主键or不允许存储NULL值的唯一二级索引列是联合索引,则,所有的索引列都必须进行等值比较),则,对该被驱动表的访问方法就是eq_ref。例如,EXPLAIN SELECT * FROM s1 INNER JOIN s2 ON s1.id = s2.id; ,此时, s1 的type 为 ALL, s2 的 type 为 eq_ref。

  4. ref : 当通过普通的 二级索引列 与 常量 进行等值匹配的方式来查询某个表时,对该表的访问方法就可能时 ref。

  5. fulltext:全文索引

  6. ref_or_null :当对普通二级索引列进行等值匹配,且,该索引列的值也可以是NULL值时,对该表的访问方法就可能是 ref_or_null。

  7. index_merge : 一般情况下,只会为单个索引生成扫描区间。索引合并。

  8. unique_subquery : 类似于两表连接中被驱动表的 eq_ref访问方法,unique_subquery针对的是一些包含 IN 子查询的查询语句。如果查询优化器决定将IN子查询转换为 EXISTS子查询,且,子查询在转换之后可以使用主键或者不允许存储NULL值的唯一二级索引进行等值匹配,则,该子查询的type列的值为 unique_subquery。

  9. index_subquery : 与 unique_subquery 类似,只不过在访问子查询中的表时,使用的时普通的索引。

  10. range :

  1. index:
  1. ALL : 全表扫描。

3. possible_keys 和 key

在EXPLAIN语句输出的执行计划中,

4. key_len

key_len 值由下面3部分组成。

  1. 该列的实际数据最多占用的存储空间长度。

  2. 如果该列可以存储NULL值,则key_len值在该列的实际数据最多占用的存储空间长度的基础上再加1字节。

  3. 对于使用变长类型的列来说,都会有2字节的空间来存储该变列的实际数据占用的存储空间长度,key_len值还要在原先的基础上加2字节。

5. ref

当访问方法是 const, eq_ref, ref, ref_or_null, unique_subquery, index_subquery中的其中一个时,ref 列展示的就是与索引列进行等值匹配的东西是啥,比如,只是一个常数或者是某个列。

6. rows

rows列:

7. filtered

分析连接查询成本时,提出过一个condition filtering(条件过滤)的概念,此概念是MySQL在计算驱动表扇出时采用的一个策略。

举个小例子, 在连接查询中, 驱动表的rows列 x 驱动表的 filtered 列 = 驱动表的扇出值(还要对被驱动表执行多少次查询)

8. Extra

Extra列是用来说明一些额外信息的。有很多个,常见的如下:

彩蛋——Extented EXPLAIN

在使用EXPLAIN语句查看了某个查询的执行计划后,紧接着还可以使用 SHOW WARNINGS语句查看与这个查询的执行计划有关的扩展信息。
在这里插入图片描述

来源地址:https://blog.csdn.net/xiaoyue_/article/details/130575636

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯