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优化)