美文网首页
MySQL EXPLAIN

MySQL EXPLAIN

作者: Leodo_ | 来源:发表于2018-07-28 17:07 被阅读0次

    在日常工作中,我们会有时会去查询一些执行时间比较久的SQL语句,EXPLAIN可以帮助开发人员分析SQL问题,查看该SQL语句有没有使用上了索引,有没有做全表扫描。explain显示了mysql如何使用索引来处理select语句以及连接表,可以帮助选择更好的索引和写出更优化的查询语句。

    explain select * from demo

    示例

    一、id

    1. id相同时,执行顺序由上至下
    2. 如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行
    3. id如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id值越大,优先级越高,越先执行

    二、select_type

    展示查询中每个select子句的类型
    1.SIMPLE(简单SELECT,不使用UNION或子查询等)
    2.PRIMARY(查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)
    3.UNION(UNION中的第二个或后面的SELECT语句)
    4.DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)
    5.UNION RESULT(UNION的结果)
    6.SUBQUERY(子查询中的第一个SELECT)
    7.DEPENDENT SUBQUERY(子查询中的第一个SELECT,取决于外面的查询)
    8.DERIVED(派生表的SELECT,FROM子句的子查询)
    9.UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)

    三、table
    显示这一行的数据是关于哪张表的,有时不是真实的表名字,看到的是derivedx(x是个数字,我理解的是第几步执行的结果)

    四、type
    表示MySQL在表中找到所需行的方式,又称“访问类型”。
    常用的类型有:ALL,index,range,ref,eq_ref,const,system,NULL(从左到右,性能从差到好)
    ALL:Full Table Scan,MySQL将遍历全表以找到匹配的行
    index:Full Index Scan,index与ALL区别为index类型只遍历索引树

    相关文章

      网友评论

          本文标题:MySQL EXPLAIN

          本文链接:https://www.haomeiwen.com/subject/bhpgmftx.html