在SELECT萌芽的添加一个post_status 列的限制前提后,QEP显示key_len 的值为132,这意味着post_type、post_status、post_date三列(62+62+8,(20×3)+2,(20×3)+2,8)都被用到了。此外,这个索引的主码列ID 的定义是应用MyISAM 存储索引的遗留陈迹。当应用InnoDB 存储引擎时,在非主码索引中包含主码列是多余的,这可以大年夜key_len 的用法看出来。
相干的QEP 列还包含带有Using index 值的Extra 列。
table 列是EXPLAIN 敕令输出结不雅中的一个零丁行的独一标识符。这个值可能是表名、表的别号或者一个为萌芽产生临时表的标识符,如派生表、子萌芽或集合。下面是QEP 中table 列的一些示例:
table: item
table: <derivedN>
table: <unionN,M>
表中N 和M 的值参考了另一个相符id 列值的table 行。相干的QEP 列还有select_type
select_type 列供给了各类表示table 列引用的应用方法的类型。最常见的值包含SIMPLE、PRIMARY、DERIVED 和UNION。其他可能的值还有UNION RESULT、DEPENDENT SUBQUERY、DEPENDENT UNION、UNCACHEABLE UNION 以及UNCACHEABLE QUERY。
Extra
1). SIMPLE
在这个QEP 中,我们看到应用了一个索引,且估计只有一行数据将被获取。
对于不包含子萌芽和其他复杂语法的简单萌芽,这是一个常 见的类型。
2). PRIMARY
6). UNION RESULT
这是为更复杂的萌芽而创建的重要表(也就是最外层的表)。这个类型平日可以在DERIVED 和UNION 类型混淆应用市价到。
3). DERIVED
当一个表不是一个物理表时,那么就被叫做DERIVED。下面的SQL 语句给出了一个QEP 中DERIVED select-type 类型的
MySQL的EXPLAIN敕令用于SQL语句的萌芽履行筹划(QEP)。这条敕令的输出结不雅可以或许让我们懂得MySQL 优化器是若何履行SQL 语句的。这条敕令并没有供给任何调剂建议,但它可以或许供给重要的信息赞助你做出调优决定计划。
示例:
- mysql> EXPLAIN SELECT MAX(id)
- -> FROM (SELECT id FROM users WHERE first = ‘west’) c;
4). DEPENDENT SUBQUERY
这个select-type 值是为应用子萌芽而定义的。下面的SQL语句供给了这个值:
- mysql> EXPLAIN SELECT p.*
- -> FROM parent p
- -> WHERE p.id NOT IN (SELECT c.parent_id FROM child c);
5). UNION
这是UNION 语句个中的一个SQL 元素。
这是一系列定义在UNION 语句中的表的返回结不雅。当select_type 为这个值瓯,经常可以看到table 的值是<unionN,M>,这解释匹配的id 行是这个集合的一部分。下面的SQL产生了一个UNION和UNION RESULT select-type:
- mysql> EXPLAIN SELECT p.* FROM parent p WHERE p.val
- LIKE ‘a%’
- -> UNION
- -> SELECT p.* FROM parent p WHERE p.id > 5;
2.7 partitions
这个值意味着仅经由过程应用索引,优化器可能仅大年夜聚合函数结不雅中返回一行。
partitions 列代表给定表所应用的分区。这一列只会在EXPLAIN
PARTITIONS 语句中出现。
推荐阅读
一方面,我们不懂得须要若干瘪据才能让问题收敛。另一方面,实际机械人进行一次操作须要消费时光、可能会造成伤害、会破坏实验前提(须要人工恢复)等,采集数据会比图像辨认、语音辨认难度大年夜很多。 >>>详细阅读
本文标题:MySQL EXPLAIN命令详解学习
地址:http://www.17bianji.com/lsqh/34650.html
1/2 1

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