美文网首页
mysql的执行计划

mysql的执行计划

作者: 懒癌晚期的自律 | 来源:发表于2021-04-13 07:41 被阅读0次

    执行计划,就是一条SQL语句,在数据库中实际执行的时候,一步步的分别都做了什么。也就是我们用EXPLAIN分析一条SQL语句时展示出来的那些信息。

    EXPLAIN命令是查看查询优化器是如何决定执行查询的主要方法,从它的查询结果中可以知道一个SQL语句每一步是如何执行的,都经历了些什么,分为哪几步,有没有用到索引,哪些字段用到了什么样的索引,是否有一些可优化的地方等,这些信息都是我们SQL优化的依据。

    要使用·EXPLAIN,只需在查询中的SELECT关键字之前增加EXPLAIN。语法如下:

    EXPLAIN + SELECT查询语句;

    具体作用

    • 表的读取顺序
    • 数据读取操作的操作类型
    • 哪些索引可以使用
    • 哪些索引被实际使用
    • 表之间的引用
    • 每张表有多少行被优化器查询

    输出各字段解释如下。更详细的信息请参考explain输出参数

    • id:select查询序列号,id相同,执行顺序由上至下;id不同,id值越大优先级越高,越先被执行;
    • select_type:查询数据的操作类型,有如下:
       simple,简单查询,不包括子查询和union;
      
       primary,包含复杂的子查询,最外层查询标记为该值;
      
       subquery,在select活where中包含子查询,被标记为该值;
      
       derived,在from列表中包含的子查询被标记为改值,MySQL会递归这些子查询,将结果保存到临时表;
      
       union,第二个select出现在union之后,被标记为该值;union包含在from的子查询中,外层select被标记为derived;
      
       union result,从union表获取结果的select;
      
    • table:显示该行数据是关于哪张表;
    • partitions:匹配的分区;
    • type:表的连接类型,其值、性能由高到底排列如下:
    • system,表中只有一行记录,相当于系统表;
    • const,通过索引一次命中,匹配一行数据;
    • eq_ref,唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配,常用语主键或唯一索引扫描;
    • ref,非唯一性索引扫描,返回匹配某个单独值的所有行,用于=、<或>操作符带索引的列;
    • range,只检索给定范围的行,使用一个索引来选择行,一般用于between、<、>;
    • index,只遍历索引树;
    • all,全表扫描;

    相关文章

      网友评论

          本文标题:mysql的执行计划

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