oracle执行计划中filter,oracle 执行计划 access和filter的区别

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<500

你可能感兴趣的:(oracle执行计划中filter,oracle 执行计划 access和filter的区别)