SQL查询中的函数调用对性能的影响(关于上下文切换)

时间:2015-11-17 10:13:21

标签: sql oracle plsql database-performance context-switching

由于SQL和PL / SQL引擎之间的上下文切换,在SQL语句中调用函数是否会对性能产生影响?或者潜在的影响取决于所谓的函数?

  1. 调用内置函数:
  2. select dbms_crypto.hash(utl_raw.cast_to_raw(COLUMN),1) from TABLE_NM;
    1. 调用PL / SQL函数:
    2. create or replace package PCK as
        function doSomething(val varchar2) return varchar2;
      end PCK;
      
      select PCK.doSomething(COLUMN) from TABLE_NM

      由于函数调用会导致性能开销吗?感谢。

1 个答案:

答案 0 :(得分:2)

  

调用内置函数:

这取决于。但是,大多数本机SQL函数内置函数都是在低级“ C语言”中编译为单个模块 Oracle内核。例如,CASEUPPER函数在两个引擎之间不会有任何上下文切换,因为我说它们位于单个模块中。

嗯,有一些内置函数是例外,例如SYSDATEUSER等。 Thomas Kyte 已经很好地解释了它here。< / p>

  

调用PL / SQL函数

PL / SQL中的 SQL调用,反之亦然,即SQL中的 PL / SQL调用需要上下文切换。从SQL到PLSQL有一个调用开销(当SQL调用PLSQL时,“命中”最明显 - 当SQL嵌入PLSQL中时,反之亦然)。