NellieXU 2023-03-20 17:01 采纳率: 0%
浏览 124
已结题

oracle 批量插入

有没有insert into的优化方法,我用多表关联select出来的数据有五十多万条,一次性插入到一张表中的效率太差,最好有代码举例
我的核心语句是insert into tab1 select Col1,col2,col3.…from tab2 left join tab3 left join
查询出来的表有五十多万行每天,每次单独查询的时候很快,一用insert into就卡死,拆分后也不管用
以下是执行计划

img

![img](https://i/

  • 写回答

12条回答 默认 最新

  • hometing218 2023-03-22 14:47
    关注

    建议通过代码的方式,先查询出来,然后采用insert all的方法加上线程池的方式来优化。批量插入数据太大会报错,代码中就可以在分批。比如分X批,每批300条,mapper.xml的写法如下(实际代码)

    <insert id="batchSave" parameterType="java.util.List">
            insert all
            <foreach collection="list" item="item" separator=" ">
                INTO cj_msg(
                id,type,type_id,title,detail,user_id,login_name,
                status,create_by,create_date,update_by,update_date,remark,del_flag)
                values
                (#{item.id},#{item.type},#{item.typeId},#{item.title},#{item.detail},#{item.user.id},#{item.loginName},
                #{item.status},#{item.createBy.id},#{item.createDate},#{item.updateBy.id},#{item.updateDate},#{item.remark},#{item.delFlag})
            </foreach>
            select ${list.size} from dual
        </insert>
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 修改了问题 3月22日
  • 修改了问题 3月22日
  • 修改了问题 3月20日
  • 展开全部

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22