MySQL中explain执行计划type连接类型一共有null,system,const,eq_ref,ref,range,index,all,从左到右,性能由高到低。
explain:通常表示查询中引用的某个表或列不存在,或者查询不涉及到表,或者查询语句本身有错误,导致MySQL无法生成执行计划。如语句 explain select 'A';
system:这表示MySQL能够直接从系统表获取数据,而不需要进行常规的表扫描。这种情况通常出现在非常特殊的查询中,如只涉及系统表的查询。
const:表示MySQL找到了一个常量值,该值在查询执行期间不会改变。这种类型的执行计划通常出现在使用了索引的等值查询中,且该值在索引中是唯一的。
eq_ref:表示使用了一个等于引用的查询。这种执行计划通常出现在使用了主键或唯一索引的等值查询中,且被引用的列在索引中是唯一的。
ref:表示使用了引用查询。这种执行计划通常出现在使用了非唯一索引或非主键索引的等值查询中。
range:表示MySQL使用了一个范围查找。这种执行计划通常出现在使用了范围查询(如BETWEEN...AND...或> < =等)的查询中。
index:表示MySQL对整张表进行了索引扫描。这种执行计划通常出现在没有使用覆盖索引的查询中,或者在某些情况下,当MySQL认为使用索引比直接扫描表更快时。
all:表示MySQL对整张表进行了全表扫描。这是最糟糕的情况,因为说明MySQL没有任何合适的索引可以使用。这种执行计划通常出现在没有使用任何索引的查询中。
const通常是出现在使用了主键索引或者唯一索引的情况。