问题描述
数据库中大约有120k条记录,并且基于一些函数,我计算所有记录的分数,每周我必须用新记录和相应的分数更新表。
下面是我用来将数据合并到表中的过程:
而函数A/ B/ C有复杂的查询,加入它来计算分数。
请建议任何方法来提高性能,因为目前有了这段代码,我只能在1小时内插入一些2k记录?我可以在这里使用并行DML吗?谢谢!
下面是我用来将数据合并到表中的过程:
create or replace procedure scorecalc AS score1 number; score2 number; score3 number; CURSOR cur IS SELECT Id_number from tableA; r_num cur%ROWTYPE; BEGIN --OPEN cur; FOR r_num IN cur LOOP select functionA(r_num.id_number),functionb(r_num.id_number),functionc(r_num.id_number) into score1, score2,score3 from dual; Merge into scores A USING (Select r_num.id_number as ID, score1 as scorea, score2 as scoreb, score3 as scorec, TO_DATE(sysdate, 'DD/MM/YYYY') as scoredate FROM DUAL) B ON ( A.ID = B.ID and A.scoredate = B.scoredate) WHEN NOT MATCHED THEN INSERT ( ID, scorea, scoreb, scorec, scoredate) VALUES ( B.ID, B.scorea, B.scoreb, B.scorec,B.scoredate) WHEN MATCHED THEN UPDATE SET A.scorea = B.scorea, A.scoreb = B.scoreb, A.scorec = B.scorec; COMMIT; END LOOP; END;复制
而函数A/ B/ C有复杂的查询,加入它来计算分数。
请建议任何方法来提高性能,因为目前有了这段代码,我只能在1小时内插入一些2k记录?我可以在这里使用并行DML吗?谢谢!
专家解答
1) 删除提交
2) 移除环路
3) 删除PLSQL
:-)
整个代码可以是单个SQL
2) 移除环路
3) 删除PLSQL
:-)
整个代码可以是单个SQL
Merge into scores A USING (Select r_num.id_number as ID, functionA(r_num.id_number) as scorea, functionb(r_num.id_number) as scoreb, functionc(r_num.id_number) as scorec, TO_DATE(sysdate, 'DD/MM/YYYY') as scoredate FROM tableA r_num) B ON ( A.ID = B.ID and A.scoredate = B.scoredate) WHEN NOT MATCHED THEN INSERT ( ID, scorea, scoreb, scorec, scoredate) VALUES ( B.ID, B.scorea, B.scoreb, B.scorec,B.scoredate) WHEN MATCHED THEN UPDATE SET A.scorea = B.scorea, A.scoreb = B.scoreb, A.scorec = B.scorec;复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
671次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
630次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
539次阅读
2025-04-20 10:07:02
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
488次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
482次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
464次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
457次阅读
2025-04-22 00:13:51
火焰图--分析复杂SQL执行计划的利器
听见风的声音
412次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
371次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
350次阅读
2025-05-05 19:28:36