MySQL EXPLAIN详解

数据库 MySQL
MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,本文主要讲解explain命令的使用及相关参数说明。

MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,本文主要讲解explain命令的使用及相关参数说明。

EXPLAIN Output Columns

 

 

id

id是用来顺序标识整个查询中SELELCT 语句的,在嵌套查询中id越大的语句越先执行。该值可能为NULL,如果这一行用来说明的是其他行的联合结果。

select_type

表示查询的类型

 

 

table

对应行正在访问哪一个表,表名或者别名

  • 关联优化器会为查询选择关联顺序,左侧深度优先
  • 当from中有子查询的时候,表名是derivedN的形式,N指向子查询,也就是explain结果中的下一列
  • 当有union result的时候,表名是union 1,2等的形式,1,2表示参与union的query id

注意:MySQL对待这些表和普通表一样,但是这些“临时表”是没有任何索引的。

type

type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到range级别,***能达到ref。

 

 

possible_keys

显示查询使用了哪些索引,表示该索引可以进行高效地查找,但是列出来的索引对于后续优化过程可能是没有用的

key

key列显示MySQL实际决定使用的键(索引)。如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

key_len

key_len列显示MySQL决定使用的键长度。如果键是NULL,则长度为NULL。使用的索引的长度。在不损失精确性的情况下,长度越短越好 。

ref

ref列显示使用哪个列或常数与key一起从表中选择行。

rows

rows列显示MySQL认为它执行查询时必须检查的行数。注意这是一个预估值。

Extra

Extra是EXPLAIN输出中另外一个很重要的列,该列显示MySQL在查询过程中的一些详细信息,MySQL查询优化器执行查询的过程中对查询计划的重要补充信息。 

责任编辑:庞桂玉 来源: 数据库开发
相关推荐

2017-04-07 14:30:26

2009-12-10 16:12:07

EXPLAIN

2023-09-21 10:55:51

MysqlSQL语句

2011-08-23 13:16:41

SQLEXPLAIN

2010-10-12 13:55:41

MySQL EXPLA

2011-08-22 15:05:03

MySQLEXPLAIN

2021-02-20 08:40:19

HiveExplain底层

2011-08-18 11:31:06

MySQL性能分析explain

2023-11-10 09:29:30

MySQLExplain

2010-05-19 10:37:06

MySQL expla

2021-01-18 07:31:52

MySQL LeetCode查询

2020-10-19 19:45:58

MySQL数据库优化

2010-05-21 16:55:47

MySQL EXPLA

2019-09-17 15:13:05

MySQLEXPLAIN数据库

2022-02-15 07:36:21

SQLEXPLAIN数据库

2011-08-24 15:11:15

explain中文man

2021-03-17 09:35:51

MySQL数据库explain

2023-02-26 01:00:12

索引优化慢查询

2023-02-10 07:00:22

2011-03-31 13:51:54

MySQL索引
点赞
收藏

51CTO技术栈公众号