首页 文章

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

提问于
浏览
3

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

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

select PCK.doSomething(COLUMN) from TABLE_NM

由于函数调用会有性能开销吗?谢谢 .

1 回答

  • 2

    调用内置函数:

    这取决于 . 但是,大多数 native SQL functionsbuilt-in functions 都是在低级别“ C language ”中编译为 Oracle kernel 中的单个模块 . 例如, CASEUPPER 函数在两个引擎之间不会有任何 context switch ,因为我说它们在一个模块中 .

    好吧,有一些内置函数是例外,比如 SYSDATEUSER 等 . Thomas Kyte 已经很好地解释了它here .

    调用PL / SQL函数

    SQL call in PL/SQL ,反之亦然,即 PL/SQL call in SQL 需要 context switch . 从SQL到PLSQL有一个调用开销(当SQL调用PLSQL时,"hit"最明显 - 当SQL嵌入PLSQL时,反之亦然) .

相关问题