在MySQL中,EXPLAIN返回的执行计划包含多种有用的信息。主要的列及其含义为:
- id: SELECT 的序列号,显示查询中表的访问顺序。
- select_type:SELECT 的类型,例如 SIMPLE、PRIMARY 、DERIVED等。
- table: 表的名称,显示 MySQL会访问的表。
- partitions:匹配的分区。
- type: 访问类型, 如ALL(全表扫描)、index(索引) 或者 range(范围扫描)。
- possible_keys:可利用的索引。
- key:实际使用的索引。如果为NULL表示没有使用索引。
- key_len: 用于索引的字节数。
- ref: 显示索引的哪一列被使用。
- rows: MySQL估计要读取的行数。
- filtered: 经过滤器处理的匹配行的百分比。
- Extra:包含不适合在其他列展示但是可能很有用的附加信息。
不同的 type 表示不同的访问类型,性能从高到低排序为:
system > const > eq_ref> ref > fulltext > ref_or_null > index_merge > unique_subquery > indexed_subquery > range > index > ALL
type列对于优化查询最为关键。