oracle 执行计划 access和filter的区别
admin
2023-04-22 05:42:13
0

These two terms in the Predicate Information section indicate when the data source is reduced. Simply, access means only retrieve those records meeting the condition and ignore others. Filter means after you already got the data, go through them all and keep those meeting the condition and throw away the others.

1 access: 直接获取那些满足条件的数据,抛弃其他不满足的数据
2 filter: 你已经有了一些数据,对这些已经有的数据应用filter,得到满足filter的数据。

很多博客论坛都有如下结论:
access表示这个谓词条件的值将会影响数据的访问路径(表or索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到过滤的作用。

但是这个结论很是含糊,而且容易歧义。很多人一看显示filter 就认为oracle没有访问索引路径的选择,肯定走全表扫描进行数据择取。真的是这样吗?

可以模拟如下场景:
create table test(aa int ,bb int ) as select rownum,rownum from dba_objects;(10w数据量)
create index .... 在aa上创建索引
select count(aa) from test where aa<500 ----access,index range scan
select count(aa) from test where aa<50000 ----- filter,index fast full scan
select count(bb) from test where aa<50000 ----filter ,table full scan
select aa,bb from test where aa<500 and bb=5
1 -- filter (bb=5)
2 --access(aa<500)
当然如果bb上建立了索引,那么filter,access的位置可能就会发生变化

明显access与filter跟是否走索引还是全表扫描无关。
上面access走索引范围扫描原因在于我只扫描到aa<500的index block我就返回结果了,而走索引快速扫描是对整个index做了扫描,相当于就是对10W条aa值对应的index block都进行扫描。那么这样区别就很明显了,filter其实可以认为在数据择取的过程中可能做了一些无用功,最终抛弃自己不需要的数据来择取最终需要的数据,而access 在数据择取方面更有针对性。也就是说access只是更倾向走索引(前提是索引存在而且合理的情况下)。

相关内容

热门资讯

今日重大发现“暗宝可以开挂吗?... 今日重大发现“暗宝可以开挂吗?”(必胜开挂神器)您好,暗宝这个游戏其实有挂的,确实是有挂的,需要了解...
今日重磅消息“经典联盟牛牛开挂... 您好:经典联盟牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款...
玩家最新攻略“天天十三水是不是... 家人们!今天小编来为大家解答天天十三水透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买...
今日重磅消息“掌心麻将圈开挂神... 网上科普关于“掌心麻将圈有没有挂”话题很是火热,小编也是针对掌心麻将圈作*弊开挂的方法以及开挂对应的...
我来教教您“拱趴游戏辅助器?”... 有 亲,根据资深记者爆料拱趴游戏是可以开挂的,确实有挂(咨询软件无需打开...
【第一消息】“九点麻将开挂神器... 家人们!今天小编来为大家解答九点麻将透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买很...
重磅消息“皇豪互娱牛牛真的有挂... 有 亲,根据资深记者爆料皇豪互娱牛牛是可以开挂的,确实有挂(咨询软件无需...
最新引进“蜀山四川麻将到底是不... 有 亲,根据资深记者爆料蜀山四川麻将是可以开挂的,确实有挂(咨询软件无需...
月租低流量多的电信卡,打游戏不... 办卡关注 微 信 公 众 号 :找卡乐园 这里是专为你打造的流量卡服务站,既能帮你揭开流量卡市场的各...
搏兔数智申请数据传输防泄露方法... 国家知识产权局信息显示,搏兔数智(深圳)企业家服务中心有限公司申请一项名为“一种数据传输防泄露的方法...