在Oracle中,谓词一般就是指where后面的那些过滤条件。

而在执行计划中,我们有时候会看到一个信息:

VIEW PUSHED PREDICATE

就是传说中的谓词推入。

谓词推入是什么意思?

就是指视图(VIEW)在做关联之前,会将外面一层的数据放到视图里面先做过滤。

一般是将外层关联的索引,放到视图内的表的索引上面来做。

在CSDN落落的Oracle优化Blog里面,有这样一个优化案例:

http://blog.csdn.net/robinson1988/article/details/6792078

其中说到:

谓词推入是双刃剑,但是我看到的更多的案例是谓词推入反而引发性能问题,问题的原因在于谓词推入后CBO计算基数就 大大减小了。

也就是说,在谓词推入后,引起CBO计算基数减少。

这是因为使用谓词推入后,索引会进行nested loop,而不会使用hash join在某些条件下,就会降低速度了。

SELECT *

FROM table1, t1

(

SELECT /*+ NO_PUSH_PRED */

*

FROM table2 t2

WHERE t2.col1 = :value1

) t2o

WHERE t2o.col2 = t1.col2

这里,会将table1和t1视图进行hash join,从而返回结果

SELECT *

FROM table1, t1

(

SELECT /*+ PUSH_PRED */

*

FROM table2 t2

WHERE t2.col1 = :value1

) t2o

WHERE t2o.col2 = t1.col2

这里,将会使用NESTED LOOPS当索引(t2.col1, t2.col2)被定义的情况下。

当视图中返回 col2 索引字段的时候,会加速连接过程。

但是,如果 col2 纯粹是展示字段用,而逻辑上不使用它作为过滤,则会slow down整个连接过程。

这个就是基于谓词推入的oracle

Refer to:http://stackoverflow.com/questions/1044584/how-could-predicate-pushing-on-an-inline-view-slow-down-a-query

oracle 谓词是什么意思,Oracle谓词推入相关推荐

  1. Oracle查询转换之连接谓词推入

    连接谓词推入(Join Predicate  Pushdown)是优化器处理带视图的目标SQL的一种优化手段,它是指虽然优化器会把该SQL中视图的定义SQL语句当作一个独立单元来单独执行,但此时优化器 ...

  2. Oracle NO_PUSH_PRED 不使用谓词推入

    Oracle Hint No PUSH PRED The NO_PUSH_PRED hint instructs the optimizer not to push a join predicate ...

  3. oracle 谓词推入失效,oracle view 谓词推入

    数据量描述: select count(*) from VIW_A   --28403614   视图 select count(*) from VIW_B --3960249 视图 select c ...

  4. oracle去掉谓词推入,消除谓词推进

    今天,还是用第一篇博文的例子,看下怎么消除谓词推进.首先先上图,这是一个发生了谓词推进的例子. sql: SELECT COUNT(1) AS count FROM ( SELECT a.ykf272 ...

  5. [20150710]11G谓词推入问题2.txt

    [20150710]11G谓词推入问题2.txt --生产系统遇到一个sql语句的问题. --生产系统的sql语句比较复杂,做一个简化的例子来说明问题.来说明自己优化遇到的困惑. --昨天看来别人的回 ...

  6. VIEW PUSHED PREDICATE(谓词推入)引发的惨剧

    帮网友调SQL http://www.itpub.net/forum.php?mod=viewthread&tid=1492997&extra=pageD1%3D&page=1 ...

  7. oracle rownum最后的数据,oracle rownum问题

    本帖最后由 dingjun123 于 2011-11-16 20:06 编辑 你根本不了解oracle rownum的用法,详细参考sql reference 发个很久以前写的东西 8.rownum- ...

  8. oracle先执行哪个from,Oracle(二)SELECT语句执行顺序

    转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一.样例 二.SELECT语句的处理过程 1. FROM阶段 2. WHE ...

  9. 让oracle跑得更快——oracle 10g性能分析与优化思路,[让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1.doc...

    [让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1 在线事务(OLTP) 在线分析(OLAP) 在Oracle数据库中,凡是分配了存储空间的,都称为段,所有段并不一定指的是表,也 ...

最新文章

  1. centos安装及网络配置
  2. 使用OpenCV搭建违章停车检测系统
  3. FetchType.LAZY和FetchType.EAGER什么区别
  4. C++ VS C# 结构体和对象的细微区别
  5. gpedit msc组策略面板 win10在哪里_Win10家庭版找不到本地组策略gpedit.msc解决办法...
  6. PhpSpreadsheet 电子表格(excel) PHP处理笔记
  7. 详解loadrunner的think time
  8. ajax post 数组
  9. 打车界的“拼多多”?
  10. vue-cli3.0升级失败,vue-cli卸载不掉,vue-cli升级不了3.0,
  11. webstorm界面主题
  12. tftpd-hpa使用完全教程
  13. 【Elasticsearch】Elasticsearch启动索引恢复流程
  14. raid5磁盘阵列数据恢复方法_服务器数据恢复步骤_存储结构介绍
  15. pr里面怎么加css样式,PR剪辑中如何添加字幕
  16. 从钢铁侠看Decorator 装饰者模式
  17. 【ML37】Bellman Equations
  18. error: ‘stol’ was not declared in this scope
  19. Java实现视频格式转化
  20. oracle如何查询授权,oracle授权查询的讲解

热门文章

  1. HTML5点击图片查看大图,科技常识:HTML5 实现图片预览和查看原图
  2. 将Excel文件导入到MySQL数据库中并实现列转行操作
  3. Vim配置文件vimrc入门介绍
  4. App开发 2015-04-08
  5. 设计模式系列:搞懂原型模式,你也会分身
  6. 《最后生还者》系列:神坛的根基是什么?
  7. 鼠标、键盘单一受损的解决办法
  8. Spring入门——入门helloSpring
  9. 参加信息系统项目管理师软考考试的一点感受
  10. Excel快速定位快捷键