explain -- possible_keys
mysql 推测可能使用的索引
expiain -- key
实际使用到的索引(当只查询索引的时候并且没有条件,那么将会出现,可能没索引,实际使用了索引)
expiain -- key_len
key_len表示索引使用的字节数,注意其显示的值为索引字段的最大可能长度,并非实际长度,是根据表定义计算出来的,同样精度下,(也就是对应的数据库字段大小要合适)该值越小越好。
expiain -- ref
表示使用的索引其数据来源是从哪来的,常见的有两种,
一 是常量const 表示用户输入的值
二 是引用了其他表的其他字段,结构是 数据库名.表名.字段名
expiain -- rows
根据表统计信息及索引选用情况,大致估算出找到所需要的记录需要读取的行数。
expiain -- extra
不适合在其他列中显示但十分重要的额外信息,这边也是只分析常见的类型
- Using filesort
文件内排序,说明mysql会对数据使用一个外部的索引排序,而不是按照表内的顺序进行读取,当出现这种情况一定要优化
-
Using temporary
产生了临时存储结果的临时表,常见于group by,该种sql也一定要优化
- Using index
查询结果是索引结果,不需要扫描表,这是覆盖索引,其具体就是,select的数据列,只用从索引中读取就能够取得,不必需要读取数据行,mysql可以利用索引直接返回select列表中的字段,而不需要根据索引再次读取数据文件。
- Using where
去表里面查找数据
- Using join buffer
查询的时候使用了 连接缓存,具体情况,mysql查询优化之explain(一)种有出现
- Impossible WHERE
where查询条件永远不能满足