explain列有哪些?有什么含义-(explain ref列)

explain列有哪些?有什么含义-(explain ref列)

一、id

SQL查询中的序列号。

id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行。

二、select_type

explain列有哪些?有什么含义-(explain ref列)

三、table

显示这一行的数据是关于哪张表的。不一定是实际存在的表名。

可以为如下的值:

  • <unionMN>:引用id为M和N UNION后的结果。
  • ;引用id为N的结果派生出的表。派生表可以是一个结果集,例如派生自FROM中子查询的结果。
  • :引用id为N的子查询结果物化得到的表。即生成一个临时表保存子查询的结果。

四、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_ref可用于使用'='操作符作比较的索引列。比较的值可以是常量,也可以是使用在此表之前读取的表的列的表达式。

相对于下面的ref区别就是它使用的唯一索引,即主键或唯一索引,而ref使用的是非唯一索引或者普通索引。

eq_ref只能找到一行,而ref能找到多行。

4、ref

对于来自前面表的每一行,在此表的索引中可以匹配到多行。若联接只用到索引的最左前缀或索引不是主键或唯一索引时,使用ref类型(也就是说,此联接能够匹配多行记录)

ref可用于使用='或<=>操作符作比较的索引列。

5、 fulltext

使用全文索引的时候是这个类型。要注意,全文索引的优先级很高,若全文索引和普通索引同时存在时,mysql不管代价,优先选择使用全文索引

6、ref_or_null

跟ref类型类似,只是增加了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等运算符的查询中。

11、index

索引全表扫描,把索引从头到尾扫一遍。这里包含两种情况:

一种是查询使用了覆盖索引,那么它只需要扫描索引就可以获得数据,这个效率要比全表扫描要快,因为索引通常比数据表小,而且还能避免二次查询。在extra中显示Using index,反之,如果在索引上进行全表扫描,没有Using index的提示。

12、all

全表扫描,性能最差。

五、 possible_keys

查询可能使用到的索引都会在这里列出来。

六、Key

key列显示MySQL实际使用的键(索引)

要想强制MvSQL使用或忽视possible kevs列中的索引,可以使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

select_type为index_merge时,这里可能出现两个以上的索引,其他的select_type这里只会出现一个。

七、key_len

表示索引中使用的字节数。

key_len只计算where条件用到的索引长度,而排序和分组就算用到了索引,也不会计算到key_len中。不损失精确性的情况下,长度越短越好。

八、ref

表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值。

九、rows

rows也是一个重要的字段。这是mysql估算的需要扫描的行数(不是精确值)

十、Extra

该列包含MySQL解决查询的详细信息, 有以下几种情况:

  • Using where:列数据是从仅仅使用了索引中的信息而没有读取实际的行动的表返回的,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示mysql服务器将在存储引擎检索行后再进行过滤。
  • Using temporary:表示MySQL需要使用临时表来存储结果集,常见于排序和分组查询。
  • Usingfilesort:MySQL中无法利用索引完成的排序操作称为“文件排序”。
  • Usingjoin buffer:改值强调了在获取连接条件时没有使用索引,并且需要连接缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体情况可能需要添加索引来改进能。• Impossible where:这个值强调了where语句会导致没有符合条件的行。
  • Select tables optimized away:这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至89291810@qq.com举报,一经查实,本站将立刻删除。
(0)
上一篇 2024年4月15日 上午10:34
下一篇 2024年4月15日 上午10:40

相关推荐

  • 面积

    的面积是地球。作为世界上最大的星球,它拥有无限的可能性和潜力。从太空中俯瞰地球,你会看到一个蓝色星球,上面覆盖着各种各样的生物和地形。这个星球上有着丰富的资源,包括空气,水,土地和…

    教育百科 2024年12月15日
  • 初三数学计算题经常出错

    初三数学计算题经常出错 在初三的数学学习中,计算题是一个非常重要的部分。然而,许多人在处理这些题目时容易出错,这可能是由于缺乏信心、细心或不熟练导致的。在这篇文章中,我们将讨论一些…

    教育百科 2024年11月29日
  • 蚌埠市三中

    蚌埠市三中,位于安徽省蚌埠市怀远县,是一所历史悠久、声誉卓著的高中。作为蚌埠市的重要中学之一,蚌埠市三中被教育部表彰为“全国中小学实验教育基地”,并被评为“全国青少年机器人教育实验…

    教育百科 2025年1月8日
  • 休学状态下可以参加高考吗(在休学中可以报竞赛吗)

    在休学中可以报竞赛吗? 近年来,随着在线教育的普及,休学现象越来越普遍。对于那些因为疾病,事故或其他原因需要暂时离开学校的学生来说,参加竞赛可能是他们恢复学业的重要途径。但是,在休…

    教育百科 2024年6月29日
  • 高中办休学对孩子以后有影响吗(高中生办休学咋办)

    高中生办休学咋办? 作为高中生,你可能正在经历许多挑战和压力。有时候,你可能会感到身心疲惫,需要休息一段时间来恢复。如果你正在考虑办休学,下面是一些可能有用的建议: 1. 与家长沟…

    教育百科 2024年6月21日
  • 高三高考已经报名了还能休学吗

    高三高考已经报名了还能休学吗? 在高三备考高考的时候,休学是一个非常常见的决定。对于很多人来说,高考是一个非常重要的考试,能够决定他们未来的职业发展。但是,休学也是一个需要谨慎考虑…

    教育百科 2024年8月7日
  • 2024扬州优质民办高中排名顶尖私立高中排行榜

    2024扬州优质民办高中排名顶尖私立高中排行榜 在教育竞争日益激烈的今天,家长们对子女的教育期望越来越高。许多家长希望孩子能够进入一所优质的民办高中,接受更好的教育资源,为未来的发…

    教育百科 2025年3月10日
  • 取消学生休学是什么意思

    取消学生休学是什么意思? 学生休学是指一个学生因为某些原因,需要暂停学习,到社会上休息一段时间,以便调整身心状态,重新投入到学习中去。通常情况下,学生休学的时间根据个人情况而定,有…

    教育百科 2024年6月2日
  • “未若柳絮因风起”真得比“撒盐空中差可拟”好吗?(未若柳絮因风起和撒盐空中差可拟哪个好为什么)

    前言 这个问题是: “未若柳絮因风起”为什么比“撒盐空中差可拟”好? 谢太傅寒雪日内集,与儿女讲论文义。俄而雪骤,公欣然曰:“白雪纷纷何所似?”兄子胡儿曰:“撒盐空中差可拟。”兄女…

    教育百科 2024年4月29日
  • 中职休学了应该交学费嘛知乎(中职休学了应该交学费嘛)

    中职休学了应该交学费嘛? 随着经济的发展,许多学生选择进入职业教育学校学习。这些学校提供了各种各样的技能和知识,帮助学生在未来的职业生涯中取得成功。然而,对于一些学生来说,职业教育…

    教育百科 2024年6月25日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注