表中对应的索引最大可能长度。可以通过设置索引长度改变该值。例如:一个varchar(255)的索引长度为255,可是我们使用不到那么长,我们可以取字符串的前五位作为索引。这时key_len 就是5.这里关于索引值的长度的选取规则,以后有机会再写一篇博客详细介绍。
ref
哪些字段和key一起被使用。没用过。
rows
受影响的行数。不是特别精确的。
Extra
解释额外的信息。包含mysql对于query优化的时候的一些附加信息。非常有用。可能出现的结果如下:
const row not found 该表为空
Deleting all rows 表格内数据被标记删除,正在删除中(某些存储引擎支持一种方法,以简单快捷的方式删除所有行,这时查询就会出现这个提示)
Distinct MySQL正在寻找不同的值,因此它在找到第一个匹配行后停止为当前行组合搜索更多行。
FirstMatch(tbl_name) 半连接FirstMatch连接快捷方式策略用于tbl_name。
Full scan on NULL key当优化程序无法使用索引查找访问方法时,子查询优化将作为回退策略发生。
Impossible HAVING该HAVING子句始终为false,无法选择任何行。
Impossible WHERE 该WHERE子句始终为false,无法选择任何行。
Impossible WHERE noticed after reading const tables MySQL已经读取了所有 const(和 system)表,并注意到该WHERE子句始终为false。
No matching min/max row 没有行满足查询的条件的行
no matching row in const table 对于具有连接的查询,有一个空表或没有满足唯一索引条件的行的表。
No matching rows after partition pruning 对于DELETE或 UPDATE,优化器在分区修剪后发现没有删除或更新的内容。
No tables used 查询没有FROM子句
Not exists 查询的内容不存在
Plan isn't ready yet 优化程序尚未完成为在命名连接中执行的语句创建执行计划时, 会出现此值。
Range checked for each record MySQL发现没有好的索引可以使用,但发现在前面的表的列值可能会使用某些索引。
Recursive 递归
Skip_open_table, Open_frm_only, Open_full_table
Skip_open_table:表文件不需要打开。该信息已从数据字典中获得。
Open_frm_only:只需要读取表信息的数据字典。
Open_full_table:未优化的信息查找。必须从数据字典中读取表信息并读取表文件。
unique row not found 对于查询,没有行满足 索引或表的条件。
Using filesort 使用文件排序。MySQL必须执行额外的传递以找出如何按排序顺序检索行。排序是通过根据连接类型遍历所有行并将排序键和指针存储到与该WHERE子句匹配的所有行的行来完成的。然后对键进行排序,并按排序顺序检索行
Using index 仅使用索引树中的信息从表中检索列信息,而不必另外寻找读取实际行。当查询仅使用属于单个索引的列时,可以使用此策略。
Using index condition 通过首先访问索引,确定是否可以读取完整的表行。