EXPLAIN之filtered
- 题记
- filtered
题记
- 书接上文《 EXPLAIN之rows》
- 2024美国大选已定,川普剑登上铁王座,在此过程中出谋划策的幕僚很重要,是他们决定了最终的执行计划
- 在《查询成本之索引选择》中提到,explain的输出,就是优化器(幕僚)选择的执行计划
- 除了SELECT开头的查询,DELETE、INSERT、UPDATE也都有执行计划,这里只关注SELECT
- 从输出的计划中可见很多字段,传达了什么样的信息,接下来看filtered
filtered
- “过滤”?,过滤啥呢,福尔摩斯将两个手指呈现V字型放在额前:看样子和条件有关!
- 真相也正是如此,指向条件过滤得到真实的记录数
- 什么?在《 EXPLAIN之rows》中rows不就是预计扫描的记录数吗?
- 当然不是…
- 额!…
- 各位看官,请见如下分解!
- 关于条件过滤:它是计算驱动表扇出时的策略
- 如果全表扫描 (All访问方法) 执行 单表查询,rows是预计 扫描记录数,filtered是估计 满足条件记录数
select * from ucoding where mark = 'mark_7'
- 如果索引执行单表扫描,rows是预计 扫描区间的记录数,filtered估计还满足其他条件的记录数
select * from ucoding where ( 'A7b93' < k1 and k1 < 'Bd621') and mark = 'Td621'
- 现在来关注在连接查询中驱动表对应执行计划的filtered值
select * from ucoding t1 JOIN icoding t2 on t1.k1 = t2.i_k1 where t2.i_mark = 'Td621''
- 结合之前拿捏的type后,现在filtered表示的被驱动表查询的次数,同样收为法器,那可真是倚天剑配屠龙刀,天下任我行