zoukankan      html  css  js  c++  java
  • MySQL的Explain

    Explain

    使用EXPLAIN关键字可以模仿优化器执行SQL查询语句,从而知道MySQL是如何处理SQL语句,分析SQL语句的性能瓶颈出现在哪里。

    显示信息

    id

    select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序。

    id相同,执行顺序由上至下。id不同(子查询的时候),id值越高,优先级越高,越先执行。

    select_type

    select_type,查询类型,用于区别普通查询、联合查询、子查询等复杂查询。

    • SIMPLE,简单SELECT查询,不包含子查询和UNION
    • PRIMARY,查询中包含子查询,最外层标记为PRIMARY
    • SUBQUERY,子查询标记为SUBQUERY
    • DERIVED,临时表的衍生
    • UNION,第二个SELECT出现在UNION之后,则标记为UNION
    • UNION RESULT,从UNION表获取结果的SELECT
    table

    显示是哪张表

    type

    访问类型。system>const>eq_ref>ref>range>index>ALL

    保证查询达到range级别,最好达到ref。

    • system,表只有一行记录,等于系统表
    • const,表示通过索引一次就找到了记录
    • eq_ref,联表查询,表中只有一条记录与索引键匹配
    • ref,返回所有匹配某个单独值的行
    • range,只检索给定范围的行
    • index,只遍历整个索引树
    • ALL,扫描整个表
    possible_keys

    显示可能应用在这张表中的索引,一个或多个。查询设计到的字段若存在索引,则该索引将被列出,但不一定被实际查询使用。

    key

    实际使用的索引。可以用来判断索引是否失效。

    key_len

    表示索引中使用的字节数,可以通过该列计算查询中使用的索引的长度。越少越好。

    ref

    显示索引的哪一列被使用了。

    rows

    大致估算找到所需的记录所需要读取的行数。

    Extra

    包含不适合在其他列显示但十分重要的额外信息。

    • Using filesort,对数据使用一个外部的索引(文件排序)排序,不是按照表内的索引顺序。
    • Using temporary,使用了临时表保存中间结果用于排序或分组,常见group by和order by。
    • Using index,表示相应的select使用了覆盖索引,避免访问了表的数据行。
    • Using where,使用了where过滤
    • Using join buffer,使用了连接缓存
  • 相关阅读:
    CCF——分蛋糕(2017-3)
    CCF——公共钥匙盒(2017-9)
    CCF——打酱油(2017-9)
    CCF——游戏(2017-12)
    SDS-简单动态字符串
    Redis主从复制
    MySQL 知识点
    MySQL 死锁
    Java 类加载机制
    Java IO
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12587535.html
Copyright © 2011-2022 走看看