- • 一个 SELECT 子句对应一个 id
- • 一个 SELECT 涉及多表 → 多行执行计划共用同一 id
- • 出现子查询 / UNION → 出现新的 id 与新的 select_type
- • UNION RESULT 的 table 是 <union1,2>:临时表去重
- • DERIVED 的 table 是 <derived2>:FROM 子查询物化的临时表
- • 可能用到的索引 ≠ 实际使用的索引
- • 优化器按成本估算后可能放弃索引
- • 典型场景:x3='xxx' 几乎匹配全表 → 走索引 ≈ 全表扫描
- • 还不如直接 ALL 全表扫,省去回表开销
- • 这就是③ 成本优化的实际体现
- • ref = const:拿一个常量值与索引列等值匹配
- • ref = test_db.t1.id:拿另一个表的字段值匹配(连接查询)
- • key_len:索引里值的最大字节长度,判断字段类型的线索
- • rows × filtered ≈ 这一步真正产出的行数