• mysql里的explain介绍


    来自尚硅谷视频

    Explain关键字:可以模拟优化器,执行SQL查询语句。

    语法: explain +SQL语句

    Explain作用:查看表的读取顺序

          数据读取操作的操作类型

          哪些索引可以使用

          哪些索引被实际使用

          表之间的引用

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

    Explain包含的表头:

     id: select 查询的序列号,包含一组数字

        id相同:从上而下执行

        id 不同:数字大的先执行。

     select_type:数据读取操作的操作类型

          simple:简单select查询,查询中不包含子查询或union

          primary:查询中若包含复杂的子部分,最外层则被标记为primary

          subQuery:在from 或where列表中包含子查询

          union:若第二个select查询出现在union之后,则被标记为union

             若union包含在from子句的子查询中,外层的select将被标记为 Derived

          union Result:从union中获取数据

    type:显示查询使用了何种类型

      从最好到最差

      system>const>eq_ref>ref>range>index>all

      实际开发中至少达到range级别 最好到ref级别

      system:表中只有一行记录

      const:通过索引一次就查到

      eq_ref:唯一性索引扫描,表中只有一条记录与之匹配

      ref:返回匹配某个值的所有行(查找和扫描的混合体)

      range:只检索给定范围的行。

    possible_keys:显示可能应用在这张表中的索引,一个或多个

    key:实际使用的索引。

       如果为null :没有使用索引

            索引失效

    key_len:表示索引中使用的字节数,长度约短越好

        key_len并非索引名的实际长度。而是根据表定义计算得出。

    ref:显示索引的哪一列被使用(索引列的值被引用)

    rows:每张表有几条记录被优化器查询。

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

       using filesort: mysql中无法利用索引完成排序操作(需要优化SQL

       using temporary:使用临时表保存中间结果。(急需优化SQL)

              MySql在对查询结果进行排序时使用临时表。

              常见排序:order by 和分组查询 group by

       using index:同时出现using where 表明索引被用来执行索引键值查找(SQL写的很棒)

             没有出现using where 表明索引用来读取数据,而非执行查找操作

              using where:使用了where 过滤

       using join buffer:使用了缓存

       impossible where:where 里的字段赋值有歧义。

          

          

  • 相关阅读:
    从零开始入门 K8s | 有状态应用编排
    OAM 深入解读:OAM 为云原生应用带来哪些价值?
    你不得不了解 Helm 3 中的 5 个关键新特性
    CNCF 公布 2020 年 TOC 选举结果 | 云原生生态周报 Vol. 36
    调度系统设计精要
    Spring的IOC容器第一辑
    JavaScript工作体系中不可或缺的函数
    教你五步制作精美的HTML时钟
    web前端vertical-align的作用及对象详解
    JavaScript中常见的10个BUG及其修复方法
  • 原文地址:https://www.cnblogs.com/kukai/p/12896924.html
Copyright © 2020-2023  润新知