oracle 谓词是什么意思,Oracle谓词推入
在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谓词推入相关推荐
- Oracle查询转换之连接谓词推入
连接谓词推入(Join Predicate Pushdown)是优化器处理带视图的目标SQL的一种优化手段,它是指虽然优化器会把该SQL中视图的定义SQL语句当作一个独立单元来单独执行,但此时优化器 ...
- Oracle NO_PUSH_PRED 不使用谓词推入
Oracle Hint No PUSH PRED The NO_PUSH_PRED hint instructs the optimizer not to push a join predicate ...
- oracle 谓词推入失效,oracle view 谓词推入
数据量描述: select count(*) from VIW_A --28403614 视图 select count(*) from VIW_B --3960249 视图 select c ...
- oracle去掉谓词推入,消除谓词推进
今天,还是用第一篇博文的例子,看下怎么消除谓词推进.首先先上图,这是一个发生了谓词推进的例子. sql: SELECT COUNT(1) AS count FROM ( SELECT a.ykf272 ...
- [20150710]11G谓词推入问题2.txt
[20150710]11G谓词推入问题2.txt --生产系统遇到一个sql语句的问题. --生产系统的sql语句比较复杂,做一个简化的例子来说明问题.来说明自己优化遇到的困惑. --昨天看来别人的回 ...
- VIEW PUSHED PREDICATE(谓词推入)引发的惨剧
帮网友调SQL http://www.itpub.net/forum.php?mod=viewthread&tid=1492997&extra=pageD1%3D&page=1 ...
- oracle rownum最后的数据,oracle rownum问题
本帖最后由 dingjun123 于 2011-11-16 20:06 编辑 你根本不了解oracle rownum的用法,详细参考sql reference 发个很久以前写的东西 8.rownum- ...
- oracle先执行哪个from,Oracle(二)SELECT语句执行顺序
转载自:小强斋太-Study Notes,原文链接 从join on和where执行顺序认识T-SQL查询处理执行顺序 目录 一.样例 二.SELECT语句的处理过程 1. FROM阶段 2. WHE ...
- 让oracle跑得更快——oracle 10g性能分析与优化思路,[让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1.doc...
[让Oracle跑得更快.Oracle.10g性能分析与优化思路]概要1 在线事务(OLTP) 在线分析(OLAP) 在Oracle数据库中,凡是分配了存储空间的,都称为段,所有段并不一定指的是表,也 ...
最新文章
- centos安装及网络配置
- 使用OpenCV搭建违章停车检测系统
- FetchType.LAZY和FetchType.EAGER什么区别
- C++ VS C# 结构体和对象的细微区别
- gpedit msc组策略面板 win10在哪里_Win10家庭版找不到本地组策略gpedit.msc解决办法...
- PhpSpreadsheet 电子表格(excel) PHP处理笔记
- 详解loadrunner的think time
- ajax post 数组
- 打车界的“拼多多”?
- vue-cli3.0升级失败,vue-cli卸载不掉,vue-cli升级不了3.0,
- webstorm界面主题
- tftpd-hpa使用完全教程
- 【Elasticsearch】Elasticsearch启动索引恢复流程
- raid5磁盘阵列数据恢复方法_服务器数据恢复步骤_存储结构介绍
- pr里面怎么加css样式,PR剪辑中如何添加字幕
- 从钢铁侠看Decorator 装饰者模式
- 【ML37】Bellman Equations
- error: ‘stol’ was not declared in this scope
- Java实现视频格式转化
- oracle如何查询授权,oracle授权查询的讲解