面试官:MySQL 索引优化你只会加索引?Explain 执行计划的 12 个字段全解析
最近接触了几个面试,问到 "MySQL 怎么优化慢 SQL",回答基本就一句话:"加索引呗。" 再追问 "你怎么确定加哪个索引?Explain 的 type 字段有哪些取值?什么是 Using filesort?" 要么含糊其辞,要么干脆答不上来。 说实话,只会 EXPLAIN + SQL 然后盯着 key 字段看"有没有走索引",这不算会用 Explain。Explain 输出的 12 个字段里藏着优化器的全部决策细节:SQL 先执行哪一部分、联合索引用了几个字段、排序走没走索引、临时表有没有产生——这些才是判断 SQL 性能瓶颈的关键。 今天这篇文章,把 Explain 的 12 个字段拆开来逐个讲,文末再放一道真实的 SQL 优化案例,带大家把学到的字段串起来用一遍。 一、执行计划长什么样?先有个整体印象 在任意一条 SELECT/UPDATE/DELETE/INSERT 语句前加上 EXPLAIN,MySQL 不会真的执行 SQL,而是返回优化器评估后的"执行计划": EXPLAIN SELECT e.emp_name, d.dept_name FROM t_employe....