• mysql explain语句解析


      通过对查询语句的分析,可以来了解查询语句的执行情况,找出查询语句执行的瓶颈,从未进行优化查询语句。

      EXPLAIN语句的基本语法 

    explain select select_options

      我们通过explain语句进行查询

    explain select * from class;

      

     下面我们对查询结果进行分析

      id:select识别符。这时select的查询序列号

    1. 如果为子查询,则id 的数字越大,则优先级越高
    2. id如果为相同,可以认为是同一组,从上往下进行查询
    3. 在所有组中,id越大则优先级越高

      select_type:连接类型

    1. SIMPLE表示简单查询,其中不包括连接查询和子查询
    2. PRIMARY:表示主查询,或者是最外层的查询语句
    3. UNION表示连接查询的第二个或者后面的查询语句
    4. UNION RESULT:表示连接查询的结果
    5. DERIVED表示导出表的select

      table:表示查询的表

      type:表示表连接的类型

    1. system:该表只有一行数据,这是const的一种特例,但是实际几乎不会出现,因为在实际开发中不可能出现一张表只存有这一行数据的现象
    2. const:表示通过索引一次就找到了,const用于primary,unique索引。因为其只匹配一条数据。若将主键置于where中,mysql就能将其转换成一个常量

      eq_ref:唯一性索引扫描,对于每个索引值表中只有一条记录与之匹配。常见与主键或者唯一索引扫描

      ref:对于来自前面表的任意行组合,将从该表中读取所有匹配的行。

      range:只检索给定范围的行,使用一个索引来选择行。当使用=,<>,>,>=,<,<=,<,is null,<=>,between或者in操作符,用常量比较关键字时,类型为range

      index:该连接类型与ALL相同。但它只扫描索引树,因为所以文件通常比数据文件小,通常比ALL更快

      ALL:进行全表扫描,出现呢这种情况是,需要通过建立索引来进行优化sql查询语句

      上面所提到的连接类型是最为常见的类型,其性能依次降低

      possible_key:指出mysql能使用哪个索引在该表中进行查询,若为null,则没有相关索引

      key:表示在查询中mysql实际用到的锁引,若为null,则实际查询中没有用到索引,可能是没有相关索引或者索引失效

      key_len:表示mysql选择的索引字段按字节计算的长度

      ref:表示使用哪个列或者常数与索引一起查询记录

      rows:显示mysql在查询时必须检查的行数

      Extra:表示mysql在处理查询时的详细信息

    1. using filesort(性能非常差):说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。mysql中无法利用索引完成的排序称为文件排序。
    2. using temporary(性能非常差):新建了内部临时表,使用了临时表保存中间结果。常见于order by,group by,所以分组和排序一定要按照锁建立的索引的名字和顺序.

     

      

    笨鸟先飞
  • 相关阅读:
    php中的多态
    面向对象的继承与组合
    PHP中的__call和__callStatic方法
    PHP中的__set和__get方法
    PHP中对象的本质
    mysql字符串查找(统计客源)
    linux查看文件大小
    mysql常用字符串操作函数大全,以及实例
    mysql滑动订单问题
    mysql列反转Pivoting
  • 原文地址:https://www.cnblogs.com/zoutingrong/p/14557687.html
Copyright © 2020-2023  润新知