MySQL中explainexplain计划的各列含义是什么?

在MySQL中,EXPLAIN返回的执行计划包含多种有用的信息。主要的列及其含义为:

  1. id: SELECT 的序列号,显示查询中表的访问顺序。
  2. select_type:SELECT 的类型,例如 SIMPLE、PRIMARY 、DERIVED等。
  3. table: 表的名称,显示 MySQL会访问的表。
  4. partitions:匹配的分区。
  5. type: 访问类型, 如ALL(全表扫描)、index(索引) 或者 range(范围扫描)。
  6. possible_keys:可利用的索引。
  7. key:实际使用的索引。如果为NULL表示没有使用索引。
  8. key_len: 用于索引的字节数。
  9. ref: 显示索引的哪一列被使用。
  10. rows: MySQL估计要读取的行数。
  11. filtered: 经过滤器处理的匹配行的百分比。
  12. Extra:包含不适合在其他列展示但是可能很有用的附加信息。

不同的 type 表示不同的访问类型,性能从高到低排序为:

system > const > eq_ref> ref > fulltext > ref_or_null > index_merge > unique_subquery > indexed_subquery > range > index > ALL

type列对于优化查询最为关键。