2013-01-14 46 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 - 我懷疑它會。