首页 > 技术文章 > mysql-explain

mingliangzhu 2017-06-10 10:51 原文

explain各项字段说明:

  id: 1        

  select_type: SIMPLE    

  table: application_user

  partitions: NULL

  type: ALL

  possible_keys: NULL

  key: NULL

  key_len: NULL

  ref: NULL

  rows: 1

  filtered: 100.00

  Extra: NULL

 

1.id

代表select 语句的编号, 如果是连接查询,表之间是平等关系, select 编号都是1,从1开始. 如果某select中有子查询,则编号递增.

2.select_type

查询类型

3.possible_key: 可能用到的索引 

注意: 系统估计可能用的几个索引,但最终,只能用1个. 

4.key: 最终用到的索引

5.key_len: 使用的索引的最大长度

6.type :是指查询的方式, 非常重要,是分析”查数据过程”的重要依据 ,可能的值:

1)all:  意味着从表的第1行,往后,逐行做全表扫描.,运气不好扫描到最后一行. 

2)index: 比all性能稍好一点,扫描所有的索引节点。

3)range: 意思是查询时,能根据索引做范围的扫描

4)ref  意思是指 通过索引列,可以直接引用到某些数据行

5)eq_ref 是指,通过索引列,直接引用某1行数据

6)const, system, null  这3个分别指查询优化到常量级别, 甚至不需要查找时间.  一般按照主键来查询时,易出现const,system 或者直接查询某个表达式,不经过表时, 出现NULL 。

7. ref列 指连接查询时, 表之间的字段引用关系.一般在多表关联查询时显示关联字段。

8.rows : 是指估计要扫描多少行

9.extra:  

index: 是指用到了索引覆盖,效率非常高 

using where 是指光靠索引定位不了,还得where判断一下  

using temporary 是指用上了临时表, group by 与order by 不同列时,或group by ,order by 别的表的列. 

using filesort : 文件排序(文件可能在磁盘,也可能在内存), (?????   

select sum(shop_price) from  goods group by cat_id(????  这句话,用到了临时表和文件排序)

 

推荐阅读