gpt4 book ai didi

SQL 查询在 2 个不同系统上的同一个 Oracle 数据库上返回不同的结果

转载 作者:行者123 更新时间:2023-12-04 16:07:56 27 4
gpt4 key购买 nike

我有 2 个相同的数据库在 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 本身。

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

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

谢谢

最佳答案

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

ALTER SYSTEM SET optimizer_features_enable='11.2.0.3';

这不是我最喜欢的解决方案,但它是目前的解决方法。

谢谢大家的帮助

关于SQL 查询在 2 个不同系统上的同一个 Oracle 数据库上返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48023406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com