在我的生產環境我有一個有意義的差異,當我在選擇直接調用的函數和函數Oracle的性能,當我「包裝」的選擇,然後調用然後函數外(下面我告訴你兩個簡單的例子)與在選擇
在第一種情況下(當直接調用函數時),結果查詢在35秒內結束。
在第二種情況下(函數包裝),結果在7秒內結束。
當然,查詢是exatcly相同,結果行也是一樣的。
在兩種方式中調用同一個函數是有區別的嗎?
慢版:
select col1, col2, myFun(col3)
from aTable;
快速版本
select col1, col2, myFun(col3)
from (select col1, col2, col3
from aTable);
你確定那纔是真正的查詢?沒有'WHERE'或'JOIN'或類似的東西? – Thilo
@ Mistre83:你有沒有試過在兩個陳述上做一個'EXPLAIN'? –
函數到底是什麼?高管的計劃是什麼?函數執行多少次? – ibre5041