谓词推入(PUSHINGPREDICATE)

PushingPredicate(谓词推入):当SQL语句中包含有不能合并的视图,并且视图有谓词过滤(也就是where过滤条件),CBO会将where过滤条件推入视图中,这个就叫做谓词推入。谓词推入的主要目的就是让Oracle尽可能早的过滤掉无用的数据,从而提升查询性能。

下面举个例子(本例基于Scott用户Oracle11gR2):

create or replace view emp1 as select /*+NO_MERGE */ename,job,deptno from emp where sal>(select avg(sal) from emp);

按照道理来说是不是应该在VIEW上面去过滤?

SQL语句中的where job='ANALYST' 是在视图里面进行过滤的

(怎么判断是在视图里面过滤的?因为VIEW关键字前面没有*),这种就叫做谓词推进

现在我加入rownum>=1约束条件,去掉 HINT

create or replace view emp1 as select ename,job,deptno from empwhere sal>(select avg(sal) from emp) and rownum>=1;

第一个是不是说VIEW上面没*??

没*号就没过滤条件但过滤条件跑到VIEW的表里去了谓词推入了

第二个情况是不是说在VIEW上面过滤的??视图上面没*号是不是没被谓词推入??

这个时候CBO没有做谓词推入,因为VIEW前面有* ,filter("JOB"='ANALYST') 是直接在VIEW上面进行过滤的,我们看执行计划的时候,VIEW前面有* 就需要关注了。

有些谓词推入,执行计划中会有VIEW PUSHED PREDICATE 关键字,出现这种情况,一般是SQL里面有视图,并且这个视图是用createview ...创建的。当你看到VIEWPUSHED PREDICATE 关键字的时候要特别留意了。

禁止谓词推入

ALTER SESSION SET "_push_join_predicate" = false;

ALTER SYSTEM SET "_push_join_predicate" = false;
————————————————
版权声明:本文为CSDN博主「leo0805leo0805」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leo0805/article/details/78251439

谓词推入(pushing predicate)相关推荐

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

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

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

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

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

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

  4. Oracle NO_PUSH_PRED 不使用谓词推入

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

  5. oracle 谓词是什么意思,Oracle谓词推入

    在Oracle中,谓词一般就是指where后面的那些过滤条件. 而在执行计划中,我们有时候会看到一个信息: VIEW PUSHED PREDICATE 就是传说中的谓词推入. 谓词推入是什么意思? 就 ...

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

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

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

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

  8. Oracle 12CR2查询转换之谓词推送

    在谓词推送中,优化器将包含在查询块中的相关谓词推送到视图查询块中.对于不能合并的视图,这种技术可以提高不能合并视图的执行计划.数据库可以使用推送谓词来访问索引或作为过滤. 例如,假设创建了一个hr.c ...

  9. 搜索技术【广度优先搜索】 - 嵌套广度优先搜索 【POJ No. 1475】 推箱子 Pushing Boxes

    搜索技术[广度优先搜索] - 嵌套广度优先搜索 [POJ No. 1475] 推箱子 Pushing Boxes 在广度优先搜索里面嵌套广度优先搜索的算法被称为嵌套广度优先搜索(或称双重广度优先搜索) ...

  10. java 谓词_java8-谓词(predicate)

    传递代码 我们首先看一个例子,假设你有一个 Apple 类,它有一个getColor方法,还有一个变量inventory保存着一个Apples的列表.你可能想要选出所有的绿苹果,并返回一个列表.通常我 ...

最新文章

  1. 洛谷 1359 租用游艇
  2. 如何利用.NET Core搭建跨平台的控制台应用程序
  3. 前端学习(1110):this指向问题
  4. sql报错SELECT list is not in GROUP BY clause and contains nonaggregated column
  5. 职称计算机 将计算机broad_1下的e盘映射为k盘网络驱动器,职称计算机考试网络基础答案(1)...
  6. 一种使用Python计算可达矩阵的简单方法
  7. shopex PHP Notice,Shopex系统配置文件config.php说明
  8. Scrapy爬虫框架的原理与实战[阳光政务爬虫项目]
  9. Java Duration格式
  10. 类和对象11:描述符方法
  11. 下拉菜单选择城市列表html,js弹出式下拉列表框选择省市地区美化插件 - pickout.js...
  12. 高数 | 【重积分】线面积分880例题
  13. 010 极限的四则运算例题
  14. beeline : Error: Could not open client transport with JDBC 连接失败
  15. 工程伦理计算机论文,关于工程伦理的几个问题
  16. 什么是内部类?有什么作用?静态内部类和非静态内部类的区别?
  17. 【STL详解】stack
  18. iqq for linux源代码,开源qq下载-Linux开源QQ 2012(iQQ)下载 v1.0.2 免费版-IT猫扑网
  19. oracle数据库19c驱动包,Oracle Database 19c 19.3 Windows x64 64-bit 下载 安装
  20. AIR32F103(七) AIR32F103CBT6/CCT6启用96K内存

热门文章

  1. python 线程学习
  2. [原创]浅谈怎么写周报
  3. Excel文本函数的应用
  4. IEEE-2023年第五届电路与系统国际会议
  5. GEC210(S5PV210)裸机驱动之I2C
  6. 大话数据结构之模式匹配算法(详解版,包含代码实现)
  7. 华为云云耀云服务器L实例评测|利用华为云云耀云服务器L实例搭建电商店铺管理系统的详细步骤
  8. WHAT IS PYTORCH?(pytorch官网60分钟闪电战第一节)
  9. 1. Mysql InnoDB中的索引
  10. 无论男女,永远不要去“追”一个人