我在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补丁?
由于
答案 0 :(得分:1)
好的,现在我只是恢复了Oracle 11g优化器并解决了我的问题。
ALTER SYSTEM SET optimizer_features_enable='11.2.0.3';
不是我最喜欢的解决方案,但现在是一种解决方法。
感谢您的帮助