zoukankan      html  css  js  c++  java
  • 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 里的字段赋值有歧义。

          

          

  • 相关阅读:
    SP6779 GSS7
    P2218 [HAOI2007]覆盖问题
    day10-包的定义和内部类
    day09-final、多态、抽象类、接口
    day08-代码块和继承
    day07-变量,封装
    day05-方法、数组
    day04-switch、循环语句
    day03-运算符、键盘录入
    day02-基本概念
  • 原文地址:https://www.cnblogs.com/kukai/p/12896924.html
Copyright © 2011-2022 走看看