MySQL 性能分析之 EXPLAIN 关键字
EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,分析语句的性能瓶颈。
EXPLAIN 能够分析出什么
EXPLAIN 关键字能够分析出:
- 表的读取顺序。
- 数据读取操作的操作类型。
- 哪些索引可以使用。
- 哪些索引被实际使用。
- 表之间的引用。
- 每张表有多少行被优化器查询。
EXPLAIN 中字段含义
id:id相同,执行顺序从上至下;id不同,id越大,越先被执行;id有相同也有不同时,id越大,顺序越靠前,越先执行。
select_type:查询类型,分别有 SIMPLE、PRIMARY、SUBQUERY、DERIVED、UNION、UNION RESULT 。
table:显示这一行数据属于哪个表。
type:访问类型。
常见访问类型排序: system > const > eg_ref > ref > range > index > ALL
system:表只有一行记录,等同系统表。
const:通过索引一次就能查询到。
eg_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。
ref:非唯一性索引扫描,返回匹配某个单独值的行。
range:范围查询。
index:仅遍历索引树。
ALL:全表查询。
possible_keys:显示可能引用在这张表的索引。
key:实际使用的索引。
key_len:索引使用字节数。
ref:显示索引的有多少列被使用。
rows:估算出找到所需的记录所需读取行数。
Extra:十分重要的额外信息。如: FileSort 等。