Luk*_*der 10 oracle optimization plsql deterministic stored-functions
在SQL SELECT语句中,我想执行一个对该SELECT语句范围具有确定性的函数(或者事务也可以):
select t.x, t.y, my_function(t.x) from t
Run Code Online (Sandbox Code Playgroud)
许多值t.x都是相同的,因此Oracle可以省略一次又一次地调用相同的函数,以加快速度.但是如果我将函数标记为DETERMINISTIC,则可以在此查询的多次执行之间缓存结果.我无法使用的原因DETERMINISTIC是因为my_function使用了不时更改的配置参数.
我可以使用其他任何关键字吗?是否有任何我应该注意的问题(内存问题,并发性等)?或者也许任何其他技巧,例如分析函数,每个t.x值只调用一次函数(没有重大的性能影响)?
Ton*_*ews 11
如果你这样做:
select t.x, t.y, (select my_function(t.x) from dual)
from t
Run Code Online (Sandbox Code Playgroud)
然后Oracle可以使用子查询缓存来实现减少的函数调用.