面试官:MySQL explain你会关注哪些字段
创始人
2024-03-04 00:50:06
0
编号字段名称字段说明重要性
1idSELECT查询序号,即为sql语句执行的顺序。数字越大越优先执行1、2、3...★★
2select_typeselect类型,用于区分是普通查询、子查询或联合查询simple:简单的查询,不含子查询和联合查询primary:子查询的最外层查询为primaryunion:在 union、union all 和子查询中的第二个和随后的 select为 uniondependent union:各个小查询都依赖于外层查询的话,那除了最左边的那个小查询之外,其余的小查询就是 dependent unionunion result:从union表获取结果的 select为 union resultsebquery:在select或者where列表中包含子查询(不在from子句中)dependent sebquery:在 select 或者 where 列表中包含子查询derived:在 form 列表中包含的子查询被标记为 derived,也叫做派生类uncacheable sebquery:一个子查询的结果不能被缓存uncacheable union:表示 union 的查询结果不能被缓存★★
3table表名或者别名,可能是临时表或者 union 合并结果集table_name
4type访问类型,表示以何种方式去访问数据库system:系统表const:最多只能匹配到一条数据eq_ref:当进行等值联表查询使用主键索引或者唯一性非空索引进行数据查找ref:查询使用的字段是个非唯一性索引索ref_or_null:字段既需要关联条件,也需要 null 值index_merge:在查询过程中需要多个索引组合使用unique_subquery:利用唯一索引来关联子查询,不再扫描全表index_subquery:利用索引来关联子查询,不再扫描全表range:利用索引查询的时候限制了范围,在指定范围内进行查询index:全索引扫描all:全表扫描system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL★★★★★
5possible_keys显示查询可能使用哪些索引来查找索引名称★★
6key实际使用的索引索引名称★★★
7key_len索引中使用的字节数数值★★★
8refref列显示使用哪个列或常数与key一起从表中查询列名或const★★★
9rows显示MYSQL执行查询的行数,数值越大越不好数值★★★★★
10filtered百分比值, 表示存储引擎返回的数据经过滤后, 剩下多少满足查询条件记录数量的比例百分比★★★★
11extraMySQL解决查询的详细信息using filtersort:说明 mysql 无法利用索引进行排序,只能利用排序算法进行排序using index:表示当前的查询是覆盖索引的,直接从索引中读取数据using where:使用 where 进行条件过滤using temporary :建立临时表来保存中间结果,查询完成之后把临时表删除using join buffer:使用连接缓存impossible where:where 语句的结果总是 false★★★★

1. id

id就是select查询序号,标志sql语句执行的顺序,数字大的先执行。

2.select_type

SELECT类型,它有以下几种值

2.1 SIMPLE

它表示简单的select,没有联合查询和子查询

2.2 PRIMARY

在有子查询的语句中,最外层的select查询就是primary

2.3 union

在 union、union all 和子查询中的第二个和后面的 select 会被标记为 union

2.4 dependent union

在包含 union 或者 union all 的大查询中,如果各个小查询都依赖于外层查询的话,那除了最左边的那个小查询之外,其余的小查询的 select_type 的值就是 dependent union

2.5 union result

从 union 表获取结果的 select 会被标记为 union result

2.6 sebquery

在 select 或者 where 列表中包含子查询(不在from子句中)

2.7 dependent sebquery

子查询中的第一个 select(不在 from 子句中),并且取决于外层查询

2.8 derived

在 form 列表中包含的子查询被标记为 derived,也叫做派生类

2.9 uncacheable sebquery

一个子查询的结果不能被缓存

2.10 uncacheable union

表示 union 的查询结果不能被缓存

3 Table

explain 语句访问的表名或者别名

4 type

访问类型,表示以何种方式去访问数据库

4.1 system

表仅有一行,这是const类型的特列

4.2 const

表最多有一个匹配行,const用于比较primary key 或者unique索引。

4.3 eq_ref

当进行等值联表查询使用主键索引或者唯一性非空索引进行数据查找

4.4 ref

查询使用的字段是个非唯一性索引索

4.5 ref_or_null

字段既需要关联条件,也需要 null 值

4.6 index_merge

在查询过程中需要多个索引组合使用

4.7 unique_subquery

利用唯一索引来关联子查询,不再扫描全表

4.8 index_subquery

利用索引来关联子查询,不再扫描全表

4.9 range

利用索引查询的时候限制了范围,在指定范围内进行查询

4.10 index

全索引扫描

4.11 ALL

全表扫描

5 possible_keys

显示查询可能使用哪些索引来查找,可能应用在这张表中的索引,一个或多个,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询实际使用

6 keys

实际使用的索引,如果为 null ,则表示没有使用索引

7 key_len

MYSQL使用的索引长度

8 ref

ref列显示使用哪个列或常数与key一起从表中查询

9 rows

显示MYSQL执行查询的行数,数值越大越不好

10 filtered

百分比值, 表示存储引擎返回的数据经过滤后, 剩下多少满足查询条件记录数量的比例.

11 Extra

该列包含MySQL解决查询的详细信息。

  • using filtersort:说明 mysql 无法利用索引进行排序,只能利用排序算法进行排序
  • using index:表示当前的查询是覆盖索引的,直接从索引中读取数据
  • using where:使用 where 进行条件过滤
  • using temporary :建立临时表来保存中间结果,查询完成之后把临时表删除
  • using join buffer:使用连接缓存
  • impossible where:where 语句的结果总是 false

相关内容

热门资讯

党建擎旗三十载,广州律师以“四... 红色,始终是广州律师行业最鲜明的底色。 自1995年广州市律师协会党总支成立,广州律师行业党建已走过...
快手称遭黑灰产攻击出现涉黄内容... 极目新闻记者 郭奕 12月22日晚,不少网友反映快手直播间出现大量色情内容,包括播放淫秽影片、主播擦...
2025年“法规体检”发现纠正... 12月22日,全国人大常委会法工委关于2025年备案审查工作情况的报告提请全国人大常委会会议审议。在...
政策“扶上马” 青春“创未来” 青年逐梦正当时,创业建功新时代。南宁市将高校毕业生创业扶持作为促进高质量充分就业的关键抓手,以“真金...
准确把握高职资源下沉政策精髓 《教育强国建设规划纲要(2024—2035年)》明确提出“推动有条件地区将高等职业教育资源下沉到市县...
双阳法院“苔花工程”太平联合工... 广大农民朋友们,关于土地的相关法律知识,你知道多少?你知道土地的哪些合法权益是受法律保护的?倘若你也...
减负超600亿元,我国将推动长... 2025年全国长期护理保险高质量发展大会昨天在浙江宁波举行。记者从大会上了解到,我国自2016年开展...
《纽约时报》记者就AI训练侵犯... 12月23日消息,据路透社报道,一位因揭露硅谷血液检测初创公司Theranos的欺诈行为而闻名的调查...
亿达中国面临6.12亿元债务清... 观点网讯:12月22日,亿达中国发布内幕消息,涉及诉讼公告。 此前,亿达中国附属公司荣泰公司、郑州亿...
以技术化、制度化、法治化提升公... □江秋伟 党的二十届四中全会提出,推进国家安全体系和能力现代化,建设更高水平平安中国。近年来,美国等...