MySQL EXPLAIN执行计划详解:掌握SQL优化核心技能!本文深度解析EXPLAIN各字段含义,包括id执行顺序、select_type查询类型、type访问方式(const/ref/range等)、possible_keys可能索引、key实际索引、rows扫描行数、Extra附加信息等关键指标。通过分析执行计划,快速定位全表扫描、索引失效、临时表使用等性能问题,提升SQL查询效率。学习如何利用type字段判断查询性能,识别Using filesort和Using temporary等警告信息,结合rows和filtered评估查询成本。适合DBA、开发人员及面试准备者,帮助您系统掌握MySQL性能优化实战技巧。
先给大家分享个干货资源——2025年Java面试宝典:
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g 提取码: 9b3g
这个网盘里整理了高频考点和实战解析,建议搭配本文一起看效果更佳!
面试中遇到 SQL 优化问题,面试官必问的就是:“说说 EXPLAIN 的字段含义”。EXPLAIN 是 MySQL 的执行计划分析工具,它能告诉你数据库怎么处理你的 SQL 语句——比如用哪个索引、是否全表扫描、有没有临时表等。这些信息直接决定了 SQL 的性能上限。
举个例子:如果 type
字段显示 ALL
,说明这条 SQL 在扫全表,这时候就得赶紧优化索引了;如果 Extra
出现 Using filesort
,说明排序没走索引,可能拖慢查询速度。掌握 EXPLAIN 各个字段的含义,就像拿到了 SQL 优化的“CT扫描仪”。
id
代表查询中每个子步骤的执行顺序。如果多个步骤的 id
相同,说明这些步骤是同一层级的,执行顺序从上到下;如果 id
不同,数值大的先执行。比如嵌套查询时,内层子查询的 id
会比外层的大。
这个字段告诉你当前步骤是哪种查询类型:
UNION
或 UNION RESULT
类型。这里显示当前步骤操作的表名。如果是子查询生成的临时表,可能会显示 <derivedN>
(N是子查询的 id)。如果是 UNION 合并的结果,可能显示 <union1,2>
这样的格式。
如果表做了分区设计,这个字段会显示实际命中的分区名称。没分区的话这里就是 NULL
。
这是面试高频考点!表示 MySQL 如何查找数据,性能从高到低排序:
A.id = B.id
)显示查询可能会用到的索引列表,但实际不一定用。如果这里为空,说明没有可用索引,得考虑加索引了。
MySQL 最终选择的索引。如果显示 NULL
,说明没走索引;如果和 possible_keys
不一致,可能是优化器觉得其他索引更优。
表示索引中使用的字节数。比如联合索引 (a,b,c)
,如果只用到 a
和 b
,这里会显示前两列的长度总和。这个值越大,说明用到的索引越充分。
显示索引查找时用了哪些列或常量。比如 const
表示用常量值匹配索引,func
表示用了函数处理。
MySQL 估计要扫描多少行才能返回结果。这个值越小越好,如果数值很大,说明索引可能没生效。
表示存储引擎返回的数据经过 WHERE 条件过滤后剩下的百分比。比如 rows=1000
,filtered=10%
,则最终大约要处理 1000×10% = 100 行。
这里会显示一些关键细节,比如:
ALL
或 index
Using filesort
)如果你正在准备面试,可以试试在 面试鸭返利网 购买会员,通过返利能省25元。他们的题库更新快,覆盖了MySQL优化、索引设计等高频考点,特别适合突击复习!
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!
今日有支付宝大红包赶快领,手慢无
支付宝扫码领取1-8元无门槛红包