phpMyAdmin 5.0 必须手动添加 EXPLAIN 查询并综合 key、type、Extra、key_len 等字段交叉解读执行计划,旧版“分析”按钮已移除;需切文本模式查看 JSON 格式结果,关键是要建立字段间信号链而非孤立判断。

phpMyAdmin 5.0 不提供“点击分析”或图形化执行计划,必须手写 EXPLAIN 查询,并在表格结果里交叉解读 key、type、Extra 和 key_len 字段才能得到真实剖析。
手动加 EXPLAIN 是唯一有效方式
旧版 phpMyAdmin 的“分析”按钮在 5.0 中已彻底移除;点它不会自动补前缀,也不会报错——只是什么也不做。你写的语句是什么,就执行什么。
- 正确做法:
EXPLAIN SELECT * FROM orders WHERE user_id = 123 AND status = 'shipped'; - 错误做法:先写
SELECT * FROM orders WHERE ...,再点“分析”按钮 - 如果语句里已有
EXPLAIN,重复加会导致语法错误:You have an error in your SQL syntax - 含子查询或 CTE 的语句,
EXPLAIN必须包在最外层:EXPLAIN WITH tmp AS (SELECT id FROM logs) SELECT * FROM tmp;
关键字段不能只看单个值,要组合判断
单独盯着 rows 或 type 容易误判。真正要建立信号链:
-
key为NULL但Extra含Using index→ 走了覆盖索引,实际没问题 -
type是ALL,但表只有几十行 → 全表扫描开销极小,无需优化 -
Extra出现Using filesort或Using temporary→ 排序/分组没走索引,必须干预 - 联合索引是否生效?先看
key_len是否匹配最左前缀长度(比如key_len=767对应VARCHAR(255)前缀索引),再核对WHERE条件顺序是否满足最左匹配
想看 JSON 格式?必须切到“文本”模式
EXPLAIN FORMAT=JSON 在 phpMyAdmin 5.0 是支持的,但默认“表格”视图无法解析嵌套结构,JSON 会被截断或显示为乱码。
立即学习“PHP免费学习笔记(深入)”;
- 写法:
EXPLAIN FORMAT=JSON SELECT * FROM users WHERE created_at > '2025-01-01'; - 执行后,点结果区右上角的 “文本”标签(不是“表格”)才能看到完整 JSON
- 若中文显示为
???,临时把 phpMyAdmin 字符集设为utf8(非utf8mb4)再查 - JSON 更适合复制到外部工具(如 MariaDB EXPLAIN Visualizer)展开节点,表格里根本看不全
别被“没图”骗了,EXPLAIN 表格本身就能定位两类高频问题
虽然没有流程图,但字段组合足够暴露关键瓶颈:
- 查分区表时,用
EXPLAIN PARTITIONS,看partitions列是否只列你指定的那个分区名(如p202503),否则说明扫描了多个分区 - 多表
JOIN时,id列数值顺序就是驱动表顺序:id相同表示同一级嵌套,id变大说明是被驱动表;如果type是const却出现在靠后的id行,说明连接顺序不合理,可能需要STRAIGHT_JOIN
真正难的不是认字段,而是把 key_len、ref、Extra 这几项串起来读——比如 key_len=4 且 ref=func,说明用了函数索引;而 key_len=767 且 ref=const,说明用了前缀索引的全部长度。这些细节一漏,优化方向就全偏了。



















