加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2017-05-27 13:22:57)
分类: oracle实践
sql语句进行解析时,经常见到Access PredicatesFilter Predicates

1.1Access Predicates

如下的语句:

Select * from sf_ystzmonth where cwmonth=’201703’;

语句解析的结果如下:

http://a3.qpic.cn/psb?/V12jEOXn4NDAgC/axEpDzKl4Pk9rzvk3FnNemivD2v3NaX2Uw1mJthhNKI!/b/dFYBAAAAAAAA&ek=1&kp=1&pt=0&bo=QwMTAQAAAAADEGc!&su=0155392257&tm=1495861200&sce=0-12-12&rf=2-9

1.2Filter Predicates

如下的语句:

Select * from sf_ystzmonth where substr(cwmonth,1,6)=’201703’;

语句解析的结果如下:

http://a2.qpic.cn/psb?/V12jEOXn4NDAgC/nTNptlSDTj15AnuCf48eIx5rLaC54tnJqItm7fT9ABY!/b/dGkBAAAAAAAA&ek=1&kp=1&pt=0&bo=QgP*AAAAAAADEIs!&su=019432417&tm=1495861200&sce=0-12-12&rf=2-9

1.3实践理解

access的解释是:知道要什么数据,也知道在哪里,直接去取。

filter的解释是:先把数据取出来,再判断是否满足条件,不满足的就丢弃。

这个解释已经很经典了。

测试发现,如果条件字段有索引,并且能够直接通过等于取得数据,例如等于或like等。就会是Access Predicates

如果条件字段有索引,但是不能直接通过等于取得数据,例如substr等函数;或者该字段没有索引,就会是Filter Predicates

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有