select_type: 这个字段描述了查询中每个操作的类型. 常见的操作类型包括:
- simple: 简单的不包含子查询或者union的查询
- primary: 查询中的最外层查询
- subquery: 在select或where列表中包含的子查询
- derived: 在from列表中包含的子查询
...
type:
- ALL 全表扫描
- index 索引扫描
- rane 范围扫描
- system 表中只有一行
- const: 使用主键或唯一索引查找时,只有一行匹配.
- eq_ref: 使用唯一索引查找时只有一行匹配.
- ref: 非唯一索引查找.
possible_keys: 表示可能被查询优化器选择使用的索引
key: 表示查询优化器选择使用的索引
filtered: 表示在表中扫描的行的百分比
表示查询条件过滤后返回的行数占表总行数的比例.
key_len: key_len表示索引使用的字节数,根据这个值可以判断索引的使用情况,特别是在使用联合索引的时候,判断该索引有多少部分被使用到非常重要。
key_len的长度计算公式很重要(key_len越小,说明索引效果越好)
Extra: 提供有关执行计划的其他信息,如使用了临时表\文件排序等.
- using index: 表示查询使用了覆盖索引, 即查询结果可以直接从索引中获取
- using where: 表示查询使用了 where 子句来过滤数据
- using temporary: 表示查询执行中使用了临时表来保存中间结果.
- using filesort: 表示查询中使用了文件排序操作
- using join buffer(Block Nested Loop): 表示查询执行中使用了连接缓冲区来处理连接操作.
- using index condition: 表示查询执行中使用了索引条件推送优化. (索引下推)
- using where; using index: 表示查询使用了where子句进行过滤,并使用了覆盖索引.
- impossible where: 表示查询的where子句总是返回false,因此没有匹配的行
- select tables optimized away: 表示查询优化器优化掉了不必要的表.
- no tables used: 表示查询中没有涉及任何表.