首页/数据/数据库速查/rows 与 filtered 解读
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条
性能与调优57 条
Redis 命令96 条Redis 运维与场景124 条

rows 与 filtered 解读

rows 是优化器估算的要扫描行数,filtered 是条件过后剩余百分比:rows × filtered% ≈ 实际参与后续处理的行数,两者决定计划成本的主体。

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

对比例子

对比例子
EXPLAIN SELECT * FROM appdb.orders
WHERE user_id = 999 AND status = 1;
-- 期望:rows 小、filtered 高
-- 反例:rows=1500000, filtered=10.00 => 估算扫 150 万行才留下 15 万行
rows估算扫描行数(统计信息推导)
filtered该步条件过滤后比例(0-100)
联动连表右侧 filtered 低 => 被驱动表放大扫描
统计信息陈旧会让 rows 严重偏低或偏高:大改数据后先 ANALYZE TABLE。

易错点

  • rows=1 就以为很快:等值查找但返回行本身巨大(大字段/大 IN)照样慢
  • 忽略 filtered=100 但实际条件不匹配:统计与真实分布背离时估算骗人

数据来源与参考

  • MySQL 8.0 Reference Manual: EXPLAIN rows/filtered

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌