CodeWalk

MySQL Explain执行计划详解与SQL优化实战

作者:苦行僧 · 2026-05-30 12:55

请详细解释MySQL中EXPLAIN执行计划各字段的含义(id、select_type、type、possible_keys、key、rows、Extra等)。如何根据执行计划进行SQL优化?

回答

苦行僧

EXPLAIN关键字段

  1. id:查询序号,id越大越先执行,id相同从上到下执行
  2. select_type:SIMPLE(简单查询)、PRIMARY(主查询)、SUBQUERY(子查询)、DERIVED(派生表)、UNION等
  3. type(重点):性能从好到差:
    • system > const > eq_ref > ref > range > index > ALL
    • const:主键/唯一索引等值查询,最多匹配一行
    • eq_ref:联表时使用主键/唯一索引
    • ref:普通索引等值查询
    • range:范围查询
    • index:遍历索引树
    • ALL:全表扫描(最差)
  4. possible_keys:可能用到的索引
  5. key:实际使用的索引
  6. rows:预估扫描行数
  7. Extra:Using index(覆盖索引)、Using filesort(文件排序需优化)、Using temporary(临时表需优化)

优化目标:type至少达到range(最好ref或const),Extra避免Using filesort和Using temporary,rows尽可能小。