SQL Query在2个不同的系统上的相同Oracle数据库上返回不同的结果

时间:2017-12-29 13:32:21

标签: sql oracle oracle12c

我在Oracle 12c上运行了2个相同的数据库。他们坐在两个不同的服务器上。

我正在两个数据库上使用SQL Developer执行以下查询。

select *
from sla
where objectname = 'INCIDENT' and
      status in 'ACTIVE'  and
      (exists (select 1
               from classancestor
               where ancestor=sla.classstructureid and classancestor.classstructureid= '')  or
       classstructureid is null or
       classstructureid =  ''
      ) ;

我在其中一个数据库上得到260个结果,在另一个数据库得到0个结果。此查询由我们正在使用的ERP生成,因此我无法修改SQL本身。

我注意到的一件事是,如果删除存在运算符周围的括号,行为就会改变。

有人可以帮忙吗?使用OR时是否有优先权?是否存在影响SQL语句处理方式的Oracle补丁?

由于

1 个答案:

答案 0 :(得分:1)

好的,现在我只是恢复了Oracle 11g优化器并解决了我的问题。

ALTER SYSTEM SET optimizer_features_enable='11.2.0.3';

不是我最喜欢的解决方案,但现在是一种解决方法。

感谢您的帮助