Oracle中的性能通过函数调用从select插入表

时间:2018-08-20 10:10:13

标签: sql oracle performance insert context-switching

我正在编写一个查询以计算一些值并将它们定期保存到表中。我需要的值是从函数调用中返回的。

这些值需要保存到表上,并且我有一个dbms计划作业将这些值插入到表中。作业执行以下操作;

BEGIN
execute immediate 'truncate table tbl1';
INSERT /*+ append*/ INTO tbl1(v1, v2, v3, v4)
SELECT
    function1(input), 
    function2(input),
    function3(input),
    SYSDATE
FROM tbl;
END;

计划的作业运行8个小时以上,记录超过50万!我理解功能的逻辑很费时,并且在从功能中进行选择时需要进行上下文切换。我还有另一种方法可以达到更好的性能吗?

我正在使用Oracle 12c。关于如何使这项工作更快地运行有什么建议吗?

1 个答案:

答案 0 :(得分:0)

功能复杂吗?

如果没有,在每次将它们插入tbl并将结果存储在新列中之后是否不能调用该函数?因此,在调用作业时,函数1、2和3被存储值的colmuns代替。