• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MySQL中Explain的用法总结(详细)

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

本篇文章给大家带来的内容是关于MySQL中Explain的用法总结(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

执行计划(query Execution plan)

语法

explain select * from table

explain 中的列

expain出来的信息有10列,
分别是id,select_type,table、type,partitions,possible_keys,key,key_len,ref,rows,Extra,下面对这些字段出现的可能进行解释:

一、ID

SQL执行的顺序的标识,SQL从大到小的执行

1、ID相同时,执行顺序由上至下

2、如果是子查询,ID的序号会递增,ID值越大优先级越高,越先被执行

3、ID如果相同,可以认为是一组,从上往下顺序执行;在所有组中,ID值越大,优先级越高,越先执行

二、select_type

示查询中每个select子句的类型

1、SIMPLE:简单的SELECT,不实用UNION或者子查询。

2、PRIMARY:最外层SELECT。

3、UNION:第二层,在SELECT之后使用了UNION。

4、DEPENDENT UNION:UNION语句中的第二个SELECT,依赖于外部子查询。

5、UNION RESULT:UNION的结果。

6、SUBQUERY:子查询中的第一个SELECT。

7、DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询。

8、DERIVED:导出表的SELECT(FROM子句的子查询)

9、MATERIALIZED:物化子查询

10、UNCACHEABLE SUBQUERY:无法缓存结果的子查询,必须为外部查询的每一行重新计算

11、UNCACHEABLE UNION:UNION 属于不可缓存的子查询的第二个或后一个选择

三、table

输出行引用的表的名称。这也可以是以下值之一:

  • <unionM,N,>:该行指的是id值为M和id值为N的并集。

  • <derivedN>:该行是指用于与该行的派生表结果id的值 N。例如,派生表可以来自FROM子句中的子查询

  • <subqueryN>:该行指的是id 值为的行的具体化子查询的结果N

四、type

表示MySQL在表中找到所需行的方式,又称“访问类型”。

常用的类型有: NULL, system, const, eq_ref, ref, range, index, ALL(从左到右,性能从差到好)
以下列表描述了从最佳类型到最差类型的连接类型

NULL
MySQL在优化过程中分解语句,执

本文来源gaodai.ma#com搞##代!^码7网

行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。

system
该表只有一行(如:系统表)。这是const连接类型的特例

const
该表最多只有一个匹配行,在查询开头读取。因为只有一行,所以优化器的其余部分可以将此行中列的值视为常量。 const表非常快,因为它们只读一次。

SELECT * FROM tbl_name WHERE primary_key=1;SELECT * FROM tbl_name WHERE primary_key_part1=1 AND primary_key_part2=2;

eq_ref
对于前面表格中的每个行组合,从该表中读取一行。除了 system和 const类型之外,这是最好的连接类型。当连接使用索引的所有部分且索引是 索引PRIMARY KEY或UNIQUE NOT NULL索引时使用它。

SELECT * FROM ref_table,other_table  WHERE ref_table.key_column=other_table.column;SELECT * FROM ref_table,other_table    WHERE ref_table.key_column_part1=other_table.column    AND ref_table.key_column_part2=1;

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MySQL中Explain的用法总结(详细)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址