首页/数据/SQL 速查/rows 与 filtered 估算解读
性能与执行计划72 条

rows 与 filtered 估算解读

rows 是预估扫描行数、filtered 是过滤后剩余百分比:两者相乘得到传给下一步的行数估算,用来定位低效过滤点。

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

示例

示例
EXPLAIN SELECT * FROM orders
WHERE user_id = 100 AND status = 'paid';
-- rows=500 filtered=10.00:预估扫描 500 行,过滤后约剩 50 行

ANALYZE TABLE orders;   -- 统计信息陈旧时先更新再对比
EXPLAIN SELECT * FROM orders
WHERE user_id = 100 AND status = 'paid';
rows预估扫描行数,非返回行数
filteredServer 层过滤后的剩余百分比(0-100)
连接场景前表 rows×filtered 的量级影响后表访问方式的选择
filtered 数值偏低说明大量行被读入后又丢弃:考虑把过滤列加入复合索引,让过滤在索引层完成。

易错点

  • 把 filtered 的 10.00 当成 10 行:它是百分比,实际行数约为 rows 的 10%
  • 统计信息过期时直接下结论:先 ANALYZE TABLE 再看计划,避免在旧估算上做优化决策

数据来源与参考

  • MySQL 8.0 Reference Manual §8.8.2 EXPLAIN Output Format(rows、filtered)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌