zoukankan      html  css  js  c++  java
  • mysql之explain用法

    一、使用方法:EXPLAIN +sql语句;

    EXPLAIN SELECT * FROM t1;

    二、功能:EXPLAIN 是什么?查看表的执行计划

    三、详解: EXPLAIN 能干嘛?

    (1)表的读取顺序

    (2)数据读取操作的操作类型

    (3)哪些索引可以使用

    (4)哪些索引被实际使用

    (5)表之间的引用

    (6)每张表有多少行被优化器查询

    explain输出解释:
    +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+
    | id | select_type | table | type  | possible_keys     | key     | key_len | ref   | rows | Extra |
    +----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+

    一.id:select查询的序列号,表示执行表的先后顺序。

    (1).id相同时,执行顺序是由上至下。

    EXPLAIN SELECT  t2.* FROM  t3,t1,t2  WHERE  t2.m_id=t1.m_id AND t2.m_id=t3.m_id;

    执行结果:

    (2)id不同时,序号越大,优先级越高,越被优先执行,

    EXPLAIN SELECT t2.* FROM t2 WHERE 
    m_id=(SELECT m_id FROM t1 WHERE 
    m_id=(SELECT m_id FROM t3 WHERE t3.m_id=5));

    (3)id相同不同同时存在时,值越大越先执行,值相同的由上而下执行

    EXPLAIN SELECT t2.* FROM 
    (SELECT t3.m_id FROM t3 ) s1,t2
    WHERE s1.m_id =(SELECT m_id FROM t1 WHERE t1.m_id=5);

    二、select_type(数据读取的操作类型)

          示查询中每个select子句的类型

    (1) SIMPLE(简单SELECT,不使用UNION或子查询等)

    (2) PRIMARY(子查询中最外层查询,查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY)

    (3) UNION(UNION中的第二个或后面的SELECT语句)

    (4) DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询)

    (5) UNION RESULT(UNION的结果,union语句中第二个select开始后面所有select)

    (6) SUBQUERY(子查询中的第一个SELECT,结果不依赖于外部查询)

    (7) DEPENDENT SUBQUERY(子查询中的第一个SELECT,依赖于外部查询)

    (8) DERIVED(派生表的SELECT, FROM子句的子查询)

    (9) UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存,必须重新评估外链接的第一行)

    三、type类型

    代表访问类型,MySQL内部将其分为多类型,常用的类型从好到差的顺序展示如下:

    system->const->eq_ef->ref->fulltext->ref_or_null->index_merge->unique_subquery->index_subquery->range->index->ALL;

    而在实际开发场景中,比较常见的几种类型如下:const->eq_ref->ref->range->index->ALL(顺序从好到差),通常优化至少在range级别或以上,比如ref算是比较不错的啦;

    上面说到的从好到差指的是查询性能。

  • 相关阅读:
    软件工程实践2019第一次作业
    SDN第三次作业
    SDN第二次作业
    SDN第一次作业
    软工第二次结对
    #软件工程第三次作业
    2019软件工程第一次作业
    php-长文章分页函数
    Sqlilab靶机配置
    目录遍历(复现及修复)
  • 原文地址:https://www.cnblogs.com/mimeng/p/14529811.html
Copyright © 2011-2022 走看看