You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PL/SQL中for循环的替代方案:优化批量数据插入性能

无需循环实现批量数据插入方案

直接用批量关联查询插入替代游标循环,利用SQL的集合操作特性,彻底避免逐行处理带来的性能问题,代码如下:

INSERT INTO final_table_resul_tbl(asset_id, asset, actual_date)
SELECT rt.asset_id, rt.asset, rt.actual_date
FROM result_tbl rt
JOIN param_tbl pt
  ON rt.asset_id = pt.asset_id
  AND rt.actual_date = pt.actual_date;

为什么这比循环高效?

数据库对集合式操作有专门的优化,一次性处理所有符合条件的数据,不需要逐行打开游标、执行插入的开销,数据量越大,性能提升越显著。

如果需要处理重复数据(避免目标表插入重复记录)

如果final_table_resul_tbl可能已有相同记录,可以用MERGE语句替代INSERT,确保只插入不存在的数据:

MERGE INTO final_table_resul_tbl ftr
USING (
    SELECT rt.asset_id, rt.asset, rt.actual_date
    FROM result_tbl rt
    JOIN param_tbl pt
      ON rt.asset_id = pt.asset_id
      AND rt.actual_date = pt.actual_date
) src
ON (ftr.asset_id = src.asset_id AND ftr.actual_date = src.actual_date)
WHEN NOT MATCHED THEN
INSERT (asset_id, asset, actual_date)
VALUES (src.asset_id, src.asset, src.actual_date);

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 00:12:43