示例
示例
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 | 预估扫描行数,非返回行数 |
|---|---|
| filtered | Server 层过滤后的剩余百分比(0-100) |
| 连接场景 | 前表 rows×filtered 的量级影响后表访问方式的选择 |
filtered 数值偏低说明大量行被读入后又丢弃:考虑把过滤列加入复合索引,让过滤在索引层完成。