在我的生产环境我有一个有意义的差异,当我在选择直接调用的函数和函数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