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

EXPLAIN Extra 常见标记解读

Using index、Using where、Using index condition、Using filesort、Using temporary:Extra 说明过滤与排序发生在哪一层。

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

常见 Extra 标记

标记含义与提示
Using where存储引擎返回行后,Server 层还要按 WHERE 过滤;过滤列未全部进入索引时出现
Using index覆盖索引:查询所需列都在索引里,不需要回表
Using index condition索引条件下推(ICP):部分条件在存储引擎的索引层完成过滤
Using filesort需要额外排序步骤(数据量小在内存缓冲完成,量大才落盘)
Using temporary使用内部临时表:GROUP BY / DISTINCT / UNION 等无法借助索引时出现
Using join buffer连接时先放入连接缓冲;带 (hash join) 为 8.0.18+ 的哈希连接
Using index for skip scan8.0.13+ 跳跃扫描:未使用前导列也能直接利用后续列

示例

示例
EXPLAIN SELECT user_id, COUNT(*)
FROM orders
GROUP BY user_id;
-- Extra 可能同时出现:Using index; Using temporary
Using filesort 不表示一定用到磁盘文件:先看排序数据量,再考虑调整索引顺序来消除排序步骤。

易错点

  • 看到 Using index 又有 Using where 就以为矛盾:前者指覆盖索引避免回表,后者指仍有 Server 层过滤,两者可以并存
  • 把 Using temporary 一律当故障:小结果集使用内存临时表属于常见行为,要结合执行频率与数据量判断

数据来源与参考

  • MySQL 8.0 Reference Manual §8.8.2 EXPLAIN Output Format(Extra 列)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌