首页/数据/SQL 速查/EXPLAIN 查看执行计划
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条变更与事务52 条
性能与执行计划72 条

EXPLAIN 查看执行计划

不真正执行语句就返回优化器选择的访问路径:每张表怎么访问、用哪个索引、预估多少行,是排查慢查询的常用起点。

SQL 速查数据更新于 2026-10-12

示例

示例
EXPLAIN SELECT o.id, o.total
FROM orders o
WHERE o.user_id = 100
ORDER BY o.created_at DESC
LIMIT 10;

-- EXPLAIN 也可用于 UPDATE / DELETE(只分析、不执行)
EXPLAIN UPDATE orders SET status = 'done' WHERE id = 1;
EXPLAIN DELETE FROM orders WHERE created_at < '2023-01-01';
返回内容每张表一行:type/key/key_len/rows/Extra 等
不执行普通 EXPLAIN 只做估算;EXPLAIN ANALYZE 才真正执行
对比技巧同一语句保留/去掉 WHERE 各 EXPLAIN 一次,观察访问方式变化
排查顺序:先 EXPLAIN 看访问方式,再决定加索引、改 SQL 还是更新统计信息。

易错点

  • 只看 possible_keys 就以为会用索引:真正选中的是 key 列,possible_keys 只是候选清单
  • 在小表测试库上看计划:数据量级差异会让优化器给出完全不同的选择,要贴近生产数据量评估

数据来源与参考

  • MySQL 8.0 Reference Manual · EXPLAIN Statement
  • MySQL 8.0 Reference Manual · Optimizing Queries with EXPLAIN
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌