2

Oracle 10 是否支持短路评估查询?如果是的话,有一些特殊的钥匙可以使用吗?

4

2 回答 2

5

您可能在谈论短路评估。

DBMS 具有基于成本的优化器。不能保证首先评估哪个条件,也没有特殊的键来激活它。

请注意,PL/SQL确实使用短路评估

于 2013-01-14T09:48:53.130 回答
3

我见过 Oracle 做的唯一短路与 NVL 与 COALESCE 有关。

SELECT NVL(1,1/0) FROM DUAL

SELECT COALESCE(1,1/0) FROM DUAL

NVL 评估双方并引发错误,合并不会。

它看起来也decode正在做同样的事情:

SELECT decode(1,1,9,2,1/0) FROM DUAL

它不评估第二部分,因此避免引发错误。

在 SQL Server 优化器上,我知道查询引擎可以重写这类语句并导致这样的短路示例出现问题,因此作为一般规则 - 你永远不应该依赖逻辑中的短路 - 我不知道是否这同样适用于甲骨文——我怀疑它会的。

于 2013-01-14T09:50:54.157 回答