暂无图片
Oracle为什么exists/not exists容易产生FILTER,而in很少会产生FILTER呢?
我来答
分享
同同
2023-03-27
Oracle为什么exists/not exists容易产生FILTER,而in很少会产生FILTER呢?

Oracle为什么exists/not exists容易产生FILTER,而in很少会产生FILTER呢?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

当子查询关键字(union/union all/start with connect by/rownum/cube/rollup),子查询会被固化为一个整体,采用exists/not exists这种写法,这时子查询中有主表连接列,只能是主表通过连接列传值给子表,所以CBO只能选择FILTER。而我们如果将SQL改写为in/not in这种写法,子查询虽然被固化为整体,但是子查询中没有主表连接列字段,这个时候CBO就不会选择FILTER。

暂无图片 评论
暂无图片 有用 3
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交
相关推荐
优化大神看下 recursive calls问题吧 ,谢谢
回答 3
已采纳
你的sharedpool多大啊?当SharedPool过小,datadictionarycache也会相应的过小,没有足够的空间存储ORACLE的系统数据字典信息时,会发生Recursivecalls
Oracle 安装和客户端安装不在一台机器上, 可以吗?
回答 2
已采纳
可以呀,并且一般装了服务端的机器上就用不着再装客户端了。
Oracle dba_hist_tbspc_space_usage无数据
回答 2
问题是,我这里AWR设置都是默认的,那起码要保留8天吧。为啥该表里一条记录都没有呢?
oracle启动错误
回答 3
已采纳
首先,sqlplus连接进去生成pfile文件:sqlplus/assysdbacreatepfile&x27;/home/oracle/pfile.ora&x27;fromspfile;然后,修改p
oracle的XTTS迁移之后,表的ROWID是否会发生变化?
回答 1
已采纳
传输表空间,是直接复制块文件,我认为rowid是不会变化的。
有很多个业务系统的数据,想都放入oracle数据库,便于以后进行查询分析,该怎么做好?
回答 1
已采纳
尽管放,分析的SQL把控好。注意执行计划。上线前审核。没有问题。
rhel7安装11g RAC是不是要在执行root.sh前打个补丁
回答 2
已采纳
可以安装完软件后再打补丁;
Oracle 自增id发生跳跃,怎么解决?
回答 4
其实它没跳,只是被你没注意到的场景消耗掉了。比如cache,比如insert时报错rollback,比如存储过程里调用了序列但没插表,等等各种情况
监听状态异常数据库无法连接
回答 2
已采纳
监听状态都显示BLOCKED了肯定连不了啊,看看监听日志有什么报错
Oracle :windows系统,重建临时表空间后,原有的dbf物理文件只能在数据库重启后才能手动删除,有什么解决办法吗?
回答 1
已采纳
删除表空间时加上includingcontentsanddatafiles