2013-01-14 47 views
2

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

+1

短路查询是什么意思?你能提供一个例子吗? – Mat

+0

短路查询意味着,如果在where子句中我有类似“WHERE A = B或B = C”的情况,如果第一个子句为真,它不会检查第二个 – Vargan

+0

两个值之间的简单比较几乎没有与从磁盘读取块的成本相比。或者从块中读取信息。 –

回答

5

您可能在谈论短路评估。

DBMS有cost-based optimizer。不能保证最先得到评估,并且没有特殊的关键来激活它。

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

2

唯一短路我所看到的甲骨文做,涉及到NVL VS 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优化,我知道,查询引擎可以重写这些类型的报表,并引起短路的例子类似这样的问题,所以作为一般规则 - 你永远不应该依赖于你的逻辑中的短路 - 我不知道是否同样适用于Oracle - 我怀疑它会。