2.8 Extra
Extra 列供给了有关不合种类的MySQL 优化器路径的一系列额外信息。Extra 列可以包含多个值,可以有很多不合的取值,并且这些值还在跟着MySQL 新版本的宣布而进一步增长。下面给出常用值的列表。你可以大年夜下面的地址找到更周全的值的列表:http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。
1). Using where
这个值表示萌芽应用了where 语句来处理结不雅——例如履行全表扫描。如不雅也用到了索引,那么行的限制前提是经由过程获取须要的数据之后处理读缓冲区来实现的。
这是ORDER BY 语句的结不雅。这可能是一个CPU 密集型的过程。可以经由过程选择合适的索引来改进机能,用索引来为萌芽结不雅排序。具体过程请参考第4章。
2). Using temporary
这个值表示应用了内部临时(基于内存的)表。一个萌芽可能用到多个临时表。有很多原因都邑导致MySQL 在履行萌芽时代创建临时表。两个常见的原因是在来自不合表的列上应用了DISTINCT,或者应用了不合的ORDER BY 和GROUP BY 列。想懂得更多内容可以拜访http://forge.mysql.com/wiki/Overview_of_query_execution_and_use_of_temp_tables。可以强迫指定一个临时表应用基于磁盘的MyISAM 存储引擎。
如许做的原因重要有两个:
内部临时表占用的空间跨越min(tmp_table_size,max_heap_table_size)体系变量的限制
3). Using filesort
- EXPLAIN SELECT ID, post_title FROM wp_posts WHERE post_type=’post’ AND post_date > ‘2010-06-01’;
4). Using index
这个值重点强调了只须要应用索引就可以知足萌芽表的请求,不须要直接拜访表数据。请参考第5 章的具体示例来懂得这个值。
5). Using join buffer
这个值强调了在获取连接前提时没有应用索引,并且须要连接缓冲区来存储中心结不雅。如不雅出现了这个值,那应当留意,根据萌芽的具体情况可能须要添加索引来改进机能。
6). Impossible where
这个值强调了where 语句会导致没有相符前提的行。请看下面的示例:mysql> EXPLAIN SELECT * FROM user WHERE 1=2;
7). Select tables optimized away
8). Distinct
应用了TEXT/BLOB 列
这个值意味着MySQL 在找到第一个匹配的行之后就会停止搜刮其他行。
2.6 select_type
9). Index merges
当MySQL 决定要在一个给定的表上应用跨越一个索引的时刻,就会出现以下格局中的一个,具体解释应用的索引以及归并的类型。
Using sort_union(…)
Using union(…)
Using intersect(…)
2.9 id
id 列是在QEP 中展示的表的持续引用。
2.10 ref
这个QEP 显示没有应用任何索引(也就是全表扫描)并且处理了大年夜量的行来知足萌芽。对同样一条SELECT 语句,一个优化过的QEP 如下所示:
ref 列可以被用来标识那些用来进行索引比较的列或者常量。
2.11 filtered
filtered 列给出了一个百分比的值,这个百分比值和rows 列的值一路应用,可以估计出那些将要和QEP 中的前一个表进行连接的行的数量。前一个表就是指id 列的值比当前表的id 小的表。这一列只有在EXPLAIN EXTENDED 语句中才会出现。
2.12 type
type 列代表QEP 中指定的表应用的连接方法。下面是最常用的几种连接方法:
const 当这个表最多只有一行匹配的行时出现system 这是const 的特例,当表只有一个row 时会出现
ref 这个值表示所有具有匹配的索引值的行都被用到
range 这个值表示所有相符一个给定范围值的索引行都被用到
ALL 这个值表示须要一次全表扫描其他类型的值还有fulltext 、ref_or_null 、index_merge 、unique_subquery、index_subquery 以及index。
想懂得更多信息可以拜访http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。
3. 解释EXPLAIN 输出结不雅
懂得你的应用法度榜样(包含技巧和实现可能性)和优化SQL 语句一致重要。下面给出一个大年夜父子关系中获取孤立的父辈记录的贸易需求的例子。这个萌芽可以用三种不合的方法构造。尽管会产生雷同的结不雅,但QEP 会显示三种不合的路径。
- mysql> EXPLAIN SELECT p.*
- -> FROM parent p
- -> WHERE p.id NOT IN (SELECT c.parent_id FROM child
推荐阅读
一方面,我们不懂得须要若干瘪据才能让问题收敛。另一方面,实际机械人进行一次操作须要消费时光、可能会造成伤害、会破坏实验前提(须要人工恢复)等,采集数据会比图像辨认、语音辨认难度大年夜很多。 >>>详细阅读
本文标题:MySQL EXPLAIN命令详解学习
地址:http://www.17bianji.com/lsqh/34650.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示