mysql explain

一、type  

  联接类型(检索方式),分为:

  a. const

    常数级别,使用了主键或者唯一索引,只需要读取一次

      b. eq_ref

          使用了主键或者唯一索引,一般是多表关联下会显示这个类型

       c. ref  

          使用了一般索引(主键、唯一索引之外的),一般是多表关联下会显示这个类型

       d. ref_or_null

          使用了一般索引(主键、唯一索引之外的),一般是多表关联下会显示这个类型,并且专门添加了包含null值的搜索

       e. index_merge

           使用了索引合并,可能会涉及多个索引,key表示索引列表

        f. unique_subquery

           子查询中使用了非唯一索引

        g. index_subquery

           子查询中使用了唯一索引

        h. range

           范围查找

         i. index

           会扫描索引文件,而all 是扫描数据文件

          j. all

          表扫描,扫描数据文件

二、select_type

      sql语句的类型

     a. simple

   最简单的查询类型,没有用到子查询(subquery)或者并集(union)

     b. primary

        在子查询语句最外面的或者union语句最前面的select 语句

     c. union 

        在union后面或者在union中第二个select语句

     d. derived

         派生表,主select语句中from后面的 select 语句 

     e. union result

         并集后的结果  

      f. dependent union 

   首先符合union的要求,其次他对主select语句是有依赖的,mysql的查询优化器会将in语句优化成exist语句,变成一个关联查询

      g. subquery

         子查询第一个select

       h. dependent subquery

         首先是subquery类型,其次子查询对主select有依赖

三、extra 

  sql查询过程中的详细信息

  a. using filesort

   是指在mysql进行了一次额外的排序,而不是通过磁盘文件排序

   一般order by 没有建索引,或者没有建覆盖索引 等问题会引发filesort

  b. using temporary 

   

二、其他

      a. possible keys 和 keys

       可能用到的索引和实际用到的索引

      b. key_len

       索引长度

       c. ref

       索引使用的数据,如果是等号,则是等号右边的数据

      d. rows

       mysql认为执行sql必须检查的行数 

参考: http://www.cnblogs.com/zhanjindong/p/3439042.html#select_type  (MySQL优化—工欲善其事,必先利其器之EXPLAIN)

     http://blog.csdn.net/hguisu/article/details/7161981 (MySQL Order By实现原理分析和Filesort优化)

原文地址:https://www.cnblogs.com/wuMing-dj/p/6909322.html