sql - 使用函数调用从选择中插入到表的 Oracle 中的性能
问题描述
我正在编写一个查询来计算一些值并将它们定期保存到一个表中。我需要的值是从函数调用返回的。
这些值需要保存到表中,我有一个 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 上。关于如何使这项工作运行得更快有什么建议吗?
解决方案
功能复杂吗?
如果没有,是否不能在每次插入 tbl 后调用该函数并将结果存储在新列中?因此,当调用作业时,函数 1、2 和 3 将替换为存储值的 colmun。
推荐阅读
- matplotlib - matplotlib标准化后如何获取各个点的值
- python - python从字符串调用类实例
- tomcat - URI 中的斜杠(/)给出来自 Tomcat 的 HTTP 400 Bad request 错误
- api - API 测试 - 采用的最佳策略
- javascript - 范围滑块输出到文本输入字段
- python - 在 K-means 聚类中组织聚类
- excel - 运行时错误“1004”宏停止运行,如果带有宏的工作簿不是活动的
- c# - 如何记录/审核插入/添加 C# EF4 的更改
- android - RecylerView Add On Scroll 未在 Swipe 内调用以刷新布局
- powerbi - 如何在 DAX 中计算平均值