explain 关键字可以查看SQL语句执行的情况
使用
explain + SQL 语句
参数值 | 含义 |
---|---|
id | 表示SELECT语句的编号 |
select_type | 表示SELECT语句的类型该参数有几个常用的取值 |
SIMPLE | 表示简单查询,其中不包括连接查询和子查询 |
PRIMARY | 表示主查询,或者是最外层的查询语句 |
UNION | 表示连接查询的第二个或后面的查询语句 |
table | 表示查询的表 |
type | 表示表的连接类型。该参数有几个常用的取值 |
const | 表示表中有多条记录,但只从表中查询一条记录 |
eq_ref | 表示多表连接时,后面的表使用了UNIQUE或者PRIMARY KEY |
ref | 表示多表查询时,后面的表使用了普通索引 |
unique_ subquery | 表示子查询中使用了UNIQUE或者PRIMARY KEY |
index_ subquery | 表示子查询中使用了普通索引 |
range | 表示查询语句中给出了查询范围 |
index | 表示对表中的索引进行了完整的扫描 |
all | 表示此次查询进行了全表扫描,该条SQL需要优化; |
possible_keys | 表示查询中可能使用的索引。如果备选的数量大于3那说明已经太多了,因为太多会导致选择索引而损耗性能, 所以建表时字段最好精简,同时也要建立联合索引,避免无效的单列索引; |
key | 表示查询使用到的索引 |
key_len | 表示索引字段的一长度; |
ref | 表示使用哪个列或常数与索引一起来查询记录; |
rows | 表示查询的行数。试图分析所有存在于累计结果集中的行数,虽然只是一个估值,却也足以反映 出SQL执行所需要扫描的行数,因此这个值越小越好; |
Extra | 表示查询过程的附件信息。 |