作家
登录

MySQL EXPLAIN命令详解学习

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

FROM inventory WHERE item_id = 16102176\G;   
  •  
  •   ********************* 1. row ***********************   
  •  
  •   id: 1   
  •  
  •   select_type: SIMPLE   
  •  
  •   table: inventory   
  •  
  •   type: ALL   
  •  
  •   possible_keys: NULL   
  •  
  •   keyNULL   
  •  
  •   key_len: NULL   
  •  
  •   ref: NULL   
  •  
  •   rows: 787338   
  •  
  •   Extra: Using where  
    1. ********************* 1. row ***********************   
    2.  
    3. id: 1   
    4.  
    5. select_type: SIMPLE   
    6.  
    7. table: inventory   
    8.  
    9. type: ref   
    10.  
    11. possible_keys: item_id   
    12.  
    13. key: item_id   
    14.  
    15. key_len: 4   
    16.  
    17. ref: const   
    18.  
    19. rows: 1   
    20.  
    21. Extra:  

    QEP 中每个行的所有列表如下所示:

     id

     select_type

     table

     partitions(这一列只有在EXPLAIN PARTITIONS 语法中才会出现)

     possible_keys

     key

     key_len

     ref

     rows

     filtered(这一列只有在EXPLAINED EXTENDED 语法中才会出现)

    这些列展示了SELECT 语句对每一个表的QEP。一个表可能和一个物理模式表或者在SQL 履行时生成的内部临时表(例如大年夜子萌芽或者归并操作会产生内部临时表)相接洽关系。

    可以参考MySQL Reference Manual 获得更多信息:http://dev.mysql.com/doc/refman/5.5/en/explain-output.html。

    2.1 key

    key 列指出优化器选择应用的索引。一般来说SQL 萌芽中的每个表都仅应用一个索引。也存在索引归并的少数例外情况,如给定表上用到了两个或者更多索引。

    下面是QEP 中key 列的示例:

    key: item_id

    key: NULL

    key: first, last

    SHOW CREATE TABLE <table>敕令是最简单的查看表和索引列细节的方法。和key 列相干的列还包含possible_keys、rows 以及key_len。

    2.2 ROWS

    萌芽中总的读操作数量是基于归并之前行的每一行的rows 值的持续积聚而得出的。这是一种嵌套行算法。

    以连接两个表的QEP 为例。经由过程id=1 这个前提找到的第一行的rows 值为1,这等于对第一个表做了一次读操作。第二行是

    经由过程id=2 找到的,rows 的值为5。这等于有5 次读操作相符当前1 的积聚量。参考两个表,读操作的总数量是6。在另一个QEP

    rows 列供给了试图分析所有存在于累计结不雅集中的行数量标MySQL 优化器估计值。QEP 很轻易描述这个很艰苦的统计量。

    中,第一rows 的值是5,第二rows 的值是1。这等于第一个表有5 次读操作,对5个积聚量中每个都有一个读操作。是以两个表

    总的读操作的次数是10(5+5)次。

    最好的估计值是1,一般来嗣魅这种情况产生在当寻找的行在表中可以经由过程主键或者独一键找到的时刻。

    鄙人面的QEP 中,外面的嵌套轮回可以经由过程id=1 来找到,其估计的物理行数是1。第二个轮回处理了10行。


      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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