关键字 | 说明 |
SIMPLE | 简朴查询(没有使用 UNION 或子查询) |
PRIMARY | 最外层的查询 |
UNION | 联合查询,在 UNION 中的第二个和随后的 SELECT 被标记为 UNION,如果UNION 被 FROM 子句中的子查询包含,那么它的第一个 SELECT 会被标记为DERIVED |
DEPENDENTUNION | UNION 中的第二个或后面的查询,依赖了外层查询 |
UNION RESULT | UNION 查询结果 |
SUBQUERY | 子查询中的第一个 SELECT 查询 |
DEPENDENT SUBQUERY | 子查询中的第一个 SELECT 查询,依赖了外层查询 |
DERIVED | 用来表示包含在 FROM 子句的子查询中的 SELECT , MySQL 会递归实验并将结果放到一个临时表中,MySQL 内部将此临时表称为 DERIVED table(派生表),由于该临时表是从子查询中派生出来的 |
DEPENDENT DERIVED | 派生表,而且有依赖于其它表 |
MALTERIALIZED | 物化子查询 |
UNCACHEABLE SUBQUERY | 子查询,但结果无法缓存,必须对于外部查询的每一行重新评估 |
UNCACHEABLEUNION | UNION 属于 UNCACHEABLE SUBQUERY 的第二个或后面的查询 |
关键字 | 说明 |
NULL | MySQL 在优化过程中分解语句,实验时甚至不用访问表或索引,此种查询最高效 |
system | 该表只有一行(相当于系统表),system 是 const 类型的特例 |
const | 针对主键或唯一索引的等值查询扫描,,最多只返回一行数据, const 查询速率非常快, 它仅仅读取一次即可。 |
eq_ref | 当使用了索引的全部构成部分,而且索引是PRIMARY KEY或UNIQUE NOT NULL 才会使用该类型 |
ref | 当满足索引的最左前缀规则,大概索引不是主键也不是唯一索引时才会发生。如果使用的索引只会匹配到少量的行 |
fulltext | 全文索引 |
ref_or_null | 该类型雷同于 ref,但是 MySQL 会额外搜索哪些行包含了 NULL。这种类型常见于解析子查询。 |
index_merge | 此类型表示使用了索引归并优化,表示一个查询里面用到了多个索引 |
unique_subquery | 该类型和 eq_ref 雷同,但是使用了 IN 查询,且子查询是主键大概唯一索引 |
index_subquery | 和 unique_subquery 雷同,只是子查询使用的好坏唯一索引 |
range | 范围扫描,表示检索了指定范围的行,主要用于有限定的索引扫描。比较常见的范围扫描是带有BETWEEN子句或WHERE子句里有>、>=、<、<=、IS NULL、<=>、BETWEEN、LIKE、IN()等操纵符 |
index | 全索引扫描,和ALL雷同,只不外index是全盘扫描了索引的数据。当查询仅使用索引中的一部分列时,可使用此类型 |
ALL | 全表扫描,性能最差 |
关键字 | 关键字 |
Using where | 不用读取表中所有信息,仅通过索引就可以获取所需数据,这发生在对表的全部的请求列都是同一个索引的部分的时候,表示 MySQL 服务器将在存储引擎检索行后再进行过滤。 |
Using temporary | 表示 MySQL 必要使用临时表来存储结果集,常见于排序和分组查询,常见 group by,order by。 |
Using filesort | 当 Query 中包含 order by 操纵,而且无法利用索引完成的排序操纵称为 “文件排序”。 |
Using join buffer | 改值夸大了在获取毗连条件时没有使用索引,而且必要毗连缓冲区来存储中间结果。如果出现了这个值,那应该注意,根据查询的具体环境可能必要添加索引来改进能。 |
Impossible where | 这个值夸大了where语句会导致没有符合条件的行(通过收集统计信息不可能存在结果)。 |
Select tables optimized away | 这个值意味着仅通过使用索引,优化器可能仅从聚合函数结果中返回一行。 |
No tables used | Query语句中使用from dual 或不含任何from子句。 |
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |