zoukankan      html  css  js  c++  java
  • 2.mysql explain命令详解

    EXPLAIN详解

    SQL编写和解析

    编写过程
    	select…distinct…from…join…on…where…group by…having…order by…limit…
    解析过程
    	from…on…join…where…group by…having…select distinct…order by…limit…
    

    执行计划:

    mysql> explain select * from study s left join course c on c.age = s.snum where s.snum >50;
    +----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
    | id | select_type | table | partitions | type | possible_keys | key   | key_len | ref         | rows | filtered | Extra       |
    +----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
    |  1 | SIMPLE      | s     | NULL       | ALL  | NULL          | NULL  | NULL    | NULL        | 2000 |    33.33 | Using where |
    |  1 | SIMPLE      | c     | NULL       | ref  | i_age         | i_age | 5       | mydb.s.snum |  494 |   100.00 | NULL        |
    +----+-------------+-------+------------+------+---------------+-------+---------+-------------+------+----------+-------------+
    

    1、id

    • id值相同,执行顺序由上至下;
    • id值不同,优先执行值较大的查询(本质:在嵌套子查询时,先查内层,再查外层)

    2、select type

    primary
    	包含子查询SQL中的主查询(最外层)
    subquery
    	包含子查询SQL中的子查询(非最外层)
    simple
    	简单查询(不包含子查询、union)
    derived
    	衍生查询
    		a、在from子查询中中有一张表
    		b、在from子查询中,如果有table1 union table2,则table1就是derived
    

    3、table

    • 查询使用的表

    4、type(查询效率从上至下递减)

    system
    	只有一条数据的系统表或衍生表只有一条数据的主查询
    const
    	仅能查到一条数据的SQL,用于Primary key 或unique index
    eq_ref
    	唯一性索引:对于每个索引键的查询,返回匹配唯一行的数据(有且只有1个,不能多,不能0),常见于primary key 和 unique key
    ref
    	非唯一性索引,对于每个索引键的查询,返回匹配的所有行(0,多)
    range
    	检索指定范围的行,where后面时一个范围查询(between,< >=,in有时候会失效,转为无索引查询)
    index
    	扫描索引中的全部数据
    all
    	扫描全表数据
    

    5、ref

    • 指明当前表所参照的字段

    6、key_len

    索引长度,常用于判断复合索引是否被完全使用:
    a、在utf8中,1个字符占3个字节,char(20)使用60字节;  
    b、如果索引字段可以为null,会用1个字节用于标识;  
    c、用两个字节标识可变长度, varchar(20) 使用62字节
    

    7、possible keys

    • 可能用到的索引

    8、key

    • 实际使用的索引

    9、rows

    • 实际通过索引查询的数据个数

    10、extra

    • using filesort
      order by 使用了文件排序
    • using temporary
      group by 使用了临时表
    • using where
      回表查询
    • using index
      使用了索引覆盖
    • impossible where
      不可能实现的where查询
    • using join buffer
      mysql使用了连接缓存
    • block nested-loop join
      使用了块嵌套循环
  • 相关阅读:
    HDU 5583 Kingdom of Black and White 水题
    HDU 5578 Friendship of Frog 水题
    Codeforces Round #190 (Div. 2) E. Ciel the Commander 点分治
    hdu 5594 ZYB's Prime 最大流
    hdu 5593 ZYB's Tree 树形dp
    hdu 5592 ZYB's Game 树状数组
    hdu 5591 ZYB's Game 博弈论
    HDU 5590 ZYB's Biology 水题
    cdoj 1256 昊昊爱运动 预处理/前缀和
    cdoj 1255 斓少摘苹果 贪心
  • 原文地址:https://www.cnblogs.com/unsigned1995/p/14153886.html
Copyright © 2011-2022 走看看