解析MYsql explain执行计划extra列输出

EXPLAIN Extra 列信息:

explain Extra列输出包含了关于mysql如何解决query的额外信息,特别是出现Using filesort 和 using temporary时,应当格外注意:

1:Child of  ‘table‘ pushed [email protected]

在做join时下推到NDB存储引擎中,引用子表‘table’,当下推join支持时,应用与Mysql cluster;

2: const row not found

通过一个query sql 例如 select... from tbl_name ,表为空是出现;

3:deleting all row

对于delete操作,一些存储引擎(MyISAM)支持一种简单并且快速的删除所有行的处理方法,如果该engine用这种优化,会显示;

4:Distinct

mysql查找distinct值,找到一个匹配之后就会立刻停止。

5:FirstMatch(tbl_name)

对tbl_name进行了semi-join firstmatch优化。

6:Full Scan on null key

子查询优化,当优化器不能使用索引查找访问的时候,采用回退策略。

7:Impossible Having

Having 语句总是 false,不能返回任何行。

8:Impossible Where

见上。

9:Impoosible where noticed after reading const tables

读完所有const(system) tables时,发现where语句总是返回false.

10: LooseScan(m..n)

Semi-join 松散策略被使用,m 和 n 是key 的一部分;

11: Materialize,scan

在mysql 5.6.7之前,这个只能用来表示物化临时表。如果有scan表示在表读取的时候没有索引临时表的索引。

在mysql 5.6.7之后,物化由select_type使用materialized说明,并且table的值为<subqueryN>。

12: No matching min/max row

没有满足查询例如SELECT MIN(...) FROM ... WHERE condition的行结果。

13: No matching row in const table

一个查询使用了join,有空表,或者在unique index 条件下没有匹配上的行。

14: No matching rows after partition pruning

发生分区清理之后发现没有东西能够被delete或者update,和impossible where意思一样。

15:  start temporary,end temporary

表示临时表被用来semi-join去重复策略

16:  unique row not found

没有满足在primary key和unique上的行。

17:  using filesort

MySQL必须做一些事,让数据以排序的顺序被读取。

18:  using index

只从index上读取数据,不从表上读取数据。如果extra还有using where,意味着用使用索引来做索引查找。如果没有using where优化器会读索引但是不表示是索引查找。

19: using index condition

表通过上访问索引和过滤索引的方式来确定是否要读取所有的表数据。这种方式下,索引用来推迟访问表数据,除非有需要。

20: using index for group-by

和using index 类似,这个表名mysql发现有索引可以用来group by或者distinct

21:using join buffer(block nested loop),using join buffer(batched key access)

block nested loop表名block nested-loop算法,batched key access表示使用batched key access算法

时间: 2024-07-30 02:24:28

解析MYsql explain执行计划extra列输出的相关文章

mysql explain执行计划详解

1).id列SELECT识别符.这是SELECT查询序列号.这个不重要,查询序号即为sql语句执行的顺序 2).select_type列常见的有: A:simple:表示不需要union操作或者不包含子查询的简单select查询.有连接查询时,外层的查询为simple,且只有一个 B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary.且只有一个 C:union:union连接的两个select查询,第一个查询是de

网站优化—mysql explain执行计划

explain执行计划 简介MySQL调优: 先发现问题(慢查询,profile) 对于使用索引和没有使用索引,了解到索引可以快速去查找数据 了解什么是索引(索引是排好序的快速查找的数据结构) 索引的管理(查看,创建,删除) 索引的本身的数据结构(B-TREE结构和聚簇结构) MySQL是如何去使用这些索引的(explain工具),需要去发现索引是否合理的被使用,防止索引滥用. ? 注意:索引对查询是有帮助的,但是对更新是没有好处的.索引要建立的合理. ? MySQL调优的一个通用思路(面试题)

MYSQL EXPLAIN执行计划命令详解(支持更新中)

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是根据官网中的每个一点来翻译.举例.验证的:英语不好,所以有些话语未必准确,请自行查看官网,若有些点下面没有例子的是因为当时一下子没有想出那么多来,如果大家有遇上好的例子,欢迎在下面留言我持续更新 查看执行计划的关键EXPLAIN 版本MYSQL5.6,用到的库是官网例子sakila,自行下载导入 由于要把每个点都翻译出来,还需要举例,所以需要一定的时间

MYSQL explain执行计划

用explain查看SQL的执行计划 在工作中,我们用于捕捉性能问题最常用的就是打开慢查询,定位执行效率差的SQL,那么当我们定位到一个SQL以后还不算完事,我们还需要知道该SQL的执行计划,比如是全表扫描,还是索引扫描,这些都需要通过EXPLAIN去完成. EXPLAIN命令是查看优化器如何决定执行查询的主要方法.可以帮助我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用. 需要注意的是,生成的QEP并不

MYSQL EXPLAIN 执行计划详解

explain的作用: explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. EXPLAIN SELECT ( SELECT c. NAME FROM fx_channel c WHERE c.id = s.channel_id ) , SUM(s.total_cost) , SUM(s.total_count) , SUM(s.success_count) FROM fx_analysis_channel_source s

MySQL 优化sql explain执行计划详解

mysql explain执行计划详解 1).id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询. 2).select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询.有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary.且只有一个C:

Mysql之执行计划

1.explain分析sql语句 例如: EXPLAIN SELECT * FROM blog_info bi INNER JOIN uam_view_unit_account uua ON bi.account_instance_id = uua.account_instance_id WHERE bi.is_comment = 0 OR (bi.is_comment = 1 AND bi.is_forward = 1)  ORDER BY bi.`publish_time`  返回结果: 而

[转载] EXPLAIN执行计划中要重点关注哪些要素

原文: https://mp.weixin.qq.com/s?__biz=MjM5NzAzMTY4NQ==&mid=400738936&idx=1&sn=2910b4119b9943bafdcfe950dc89e028&scene=0&uin=Mjk1ODMyNTYyMg%3D%3D&key=04dce534b3b035ef3da41c55e69b6792390d87f8207be3e924d28fab0b6ac41a02549bf7410a7849c9f2

EXPLAIN执行计划中要重点关注哪些要素(叶金荣)

原文:http://mp.weixin.qq.com/s/CDKN_nPcIjzA_U5-xwAE5w 导读 EXPLAIN的结果中,有哪些关键信息值得注意呢? MySQL的EXPLAIN当然和ORACLE的没法比,不过我们从它输出的结果中,也可以得到很多有用的信息. 总的来说,我们只需要关注结果中的几列: 列名 备注 type 本次查询表联接类型,从这里可以看到本次查询大概的效率 key 最终选择的索引,如果没有索引的话,本次查询效率通常很差 key_len 本次查询用于结果过滤的索引实际长度