【发布时间】:2020-10-20 22:35:53
【问题描述】:
在我的生产环境中,当我直接在 select 中调用一个函数和当我“包装”select 然后在外面调用 then 函数时,我有一个显着的区别(下面我给你展示两个简单的例子)
在第一种情况下(直接调用函数时)结果查询在 35 秒后结束。
在第二种情况下(函数包装),结果在 7 秒内结束。
当然,查询完全一样,结果行也一样。
两种方式调用同一个函数有区别吗?
慢速版:
select col1, col2, myFun(col3)
from aTable;
快速版本
select col1, col2, myFun(col3)
from (select col1, col2, col3
from aTable);
【问题讨论】:
-
你确定这是真正的查询吗?没有
WHERE或JOIN或类似的东西? -
@Mistre83:你有没有尝试在两个语句上都写一个
EXPLAIN? -
这个功能到底是什么?执行计划是什么?函数执行了多少次?
-
真正的查询非常“大”,我只是写了“概念”。 @SameerMirji 解释如果我在语句中有功能是有意义的?
-
@Mistre83:可能。您将通过
EXPLAIN PLAN.. 找到这一点;)
标签: oracle