【问题标题】:Performance impact of function calls in an SQL Query (About Context Switching)SQL 查询中函数调用的性能影响(关于上下文切换)
【发布时间】:2016-02-18 15:59:40
【问题描述】:

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

  1. 调用内置函数:
select dbms_crypto.hash(utl_raw.cast_to_raw(COLUMN),1) from TABLE_NM;
  1. 调用 PL/SQL 函数:
创建或替换包 PCK 为
  函数doSomething(val varchar2)返回varchar2;
结束 PCK;

从 TABLE_NM 中选择 PCK.doSomething(COLUMN)

函数调用是否存在性能开销?谢谢。

【问题讨论】:

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


    【解决方案1】:

    调用内置函数:

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

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

    调用 PL/SQL 函数

    PL/SQL 中的SQL 调用,反之亦然,即SQL 中的PL/SQL 调用 需要上下文切换。从 SQL 到 PLSQL 存在调用开销(当 SQL 调用 PLSQL 时,“命中”最为明显——当 SQL 嵌入 PLSQL 时,则不然)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 2011-01-07
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      相关资源
      最近更新 更多