作家
登录

MySQL EXPLAIN命令详解学习

作者: 来源: 2017-04-07 16:03:22 阅读 我要评论

'post'   
  •  
  • -> AND post_status='publish'   
  •  
  • -> AND post_date > '2010-06-01' 
  • 在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 语句的。这条敕令并没有供给任何调剂建议,但它可以或许供给重要的信息赞助你做出调优决定计划。

    示例:

    1. mysql> EXPLAIN SELECT MAX(id) 
    2.  
    3. -> FROM (SELECT id FROM users WHERE first = ‘west’) c;  

    4). DEPENDENT SUBQUERY

    这个select-type 值是为应用子萌芽而定义的。下面的SQL语句供给了这个值:

    1. mysql> EXPLAIN SELECT p.* 
    2.  
    3. -> FROM parent p 
    4.  
    5. -> 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:

    1. mysql> EXPLAIN SELECT p.* FROM parent p WHERE p.val 
    2.  
    3. LIKE ‘a%’ 
    4.  
    5. -> UNION 
    6.  
    7. -> SELECT p.* FROM parent p WHERE p.id > 5;  

    2.7 partitions

    这个值意味着仅经由过程应用索引,优化器可能仅大年夜聚合函数结不雅中返回一行。

    partitions 列代表给定表所应用的分区。这一列只会在EXPLAIN

    PARTITIONS 语句中出现。


      推荐阅读

      有没有将深度学习融入机器人领域的新尝试?

    一方面,我们不懂得须要若干瘪据才能让问题收敛。另一方面,实际机械人进行一次操作须要消费时光、可能会造成伤害、会破坏实验前提(须要人工恢复)等,采集数据会比图像辨认、语音辨认难度大年夜很多。 >>>详细阅读


    本文标题:MySQL EXPLAIN命令详解学习

    地址:http://www.17bianji.com/lsqh/34650.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)