oracle程序性能优化实录-Access Predicates和Filter Predicates

分类: oracle实践 |
对sql语句进行解析时,经常见到Access
Predicates和Filter
Predicates。
1.1Access Predicates
如下的语句:
Select * from sf_ystzmonth where cwmonth=’201703’;
语句解析的结果如下:
1.2Filter Predicates
如下的语句:
Select * from sf_ystzmonth where substr(cwmonth,1,6)=’201703’;
语句解析的结果如下:
1.3实践理解
对access的解释是:知道要什么数据,也知道在哪里,直接去取。
对filter的解释是:先把数据取出来,再判断是否满足条件,不满足的就丢弃。
这个解释已经很经典了。
测试发现,如果条件字段有索引,并且能够直接通过等于取得数据,例如等于或like等。就会是Access Predicates。
如果条件字段有索引,但是不能直接通过等于取得数据,例如substr等函数;或者该字段没有索引,就会是Filter Predicates。