phpmyadmin 5 不支持自动添加 explain 前缀和图形化执行计划,需手动编写 explain 查询并结合 key、type、extra 等字段综合分析执行计划,json 格式需切至“文本”模式查看。
phpmyadmin 5 不支持自动添加 explain 前缀,也不提供图形化执行计划图——你必须手动写 explain 查询,并在表格结果里逐字段解读关键信息。
必须手写 EXPLAIN,不能点“分析”按钮
phpMyAdmin 5 已移除旧版的“分析”快捷按钮,点击它不会自动给你的 SQL 加 EXPLAIN。直接执行普通查询,看到的是结果数据;想看执行计划,就得自己敲。
- 正确写法:
EXPLAIN SELECT * FROM users WHERE status = 'active'; - 错误做法:先写
SELECT * FROM users WHERE status = 'active';,再点“分析”——什么也不会发生 - 如果语句已含
EXPLAIN,重复加会报错:You have an error in your SQL syntax - 子查询或 CTE 要包在最外层:
EXPLAIN WITH tmp AS (SELECT id FROM logs) SELECT * FROM tmp;
EXPLAIN 表格里真正要盯住的字段
别只扫 rows 和 type,它们容易误导。重点看组合信号:
-
key为NULL但Extra含Using index→ 走了覆盖索引,没问题 -
type是ALL,但表只有几十行 → 实际影响微乎其微 -
Extra出现Using filesort或Using temporary→ 排序/分组没走索引,得优化 - 联合索引是否生效?看
key_len是否匹配最左前缀长度,再核对WHERE条件顺序
想看 JSON 格式执行计划?切到“文本”模式
phpMyAdmin 5 支持 EXPLAIN FORMAT=JSON,但默认表格视图无法解析嵌套结构,JSON 会被当纯文本截断或乱码。
- 写法:
EXPLAIN FORMAT=JSON SELECT * FROM orders WHERE created_at > '2024-01-01'; - 执行后,点结果区右上角的“文本”标签(不是“表格”),才能看到完整 JSON
- 若中文显示为
,临时把 phpMyAdmin 字符集设为utf8(非utf8mb4)再查 - JSON 更适合复制到外部工具(如 MariaDB EXPLAIN Visualizer)做节点展开,表格里看不全
别指望“可视化”,但可以快速验证分区或驱动表
虽然没有流程图,EXPLAIN 表格本身足够定位两类高频问题:
- 查分区表时,用
EXPLAIN PARTITIONS,看partitions列是否只列你指定的那个分区名(如p202401) - 多表 JOIN 时,
id列数值顺序就是实际驱动表顺序,id相同表示同一级嵌套,数值变大说明是被驱动表 - 如果
type是const或eq_ref却出现在靠后的id行,说明连接顺序不合理,可能需要强制STRAIGHT_JOIN
真正难的不是怎么看字段,而是把 key_len、ref、Extra 这几项串起来读——比如 key_len=767 且 ref=const,说明用了前缀索引的全部长度;而 key_len=4 + ref=func 往往意味着隐式类型转换。这些细节在表格里都明摆着,只是没人帮你连起来讲。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











