explain的中文是解释的意思,在mysql中,explain主要是用于分析查询语句或表结构的性能瓶颈。从而让我们优化调整sql语句,从而达到更高的效率。
explain执行结果字段type说明
mysql优化explain的结果集中type的意思是查询所使用的访问类型,表示查询的sql语句好坏,从最好到最差的依次为:system>const>eq_ref>ref>range>index>ALL。一般来说要尽量达到range级别,最好能达到ref。
1、system
表只有一行记录(等于系统表)
2、const
表示通过一次索引就找到了结果,常出现于primary key或unique索引。因为只匹配一行数据,所以查询非常快。如将主键置于where条件中,MySQL就能将查询转换为一个常量。
注:对于system和const可能实际意义并不是很大,因为单表单行查询本来就快,意义不大。
3、eq_ref
唯一索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见主键或唯一索引扫描。
4、ref
非唯一性索引扫描,返回匹配某个单独值的所有行。本质上也是一种索引访问,返回匹配某值(某条件)的多行值,属于查找和扫描的混合体。
5、range
只检索给定范围的行,使用一个索引来检索行,可以在key列中查看使用的索引,一般出现在where语句的条件中,如使用between、>、<、in等查询。这种索引的范围扫描比全表扫描要好,因为索引的开始点和结束点都固定,不用扫描全索引。
6、index
全索引扫描,index和ALL的区别:index只遍历索引树,通常比ALL快,因为索引文件通常比数据文件小。虽说index和ALL都是全表扫描,但是index是从索引中读取,ALL是从磁盘中读取。
7、ALL
全表扫描。