mysql批量快速插入数据

本文探讨了在Java后端进行MySQL数据插入时,从原始的循环逐条插入到优化后的批量插入方法,揭示了批量插入能显著提高数据插入速度。通过示例展示了MyBatis中两种批量插入的SQL写法,并提到了在处理大数据量时可能遇到的`max_allowed_packet`异常及解决方案。
摘要由CSDN通过智能技术生成

首先是后端循环插入数据库(不推荐)

首先是慢的由于需要插入大量数据库,很慢的方法
插入方式为程序遍历循环逐条插入。在mysql上检测插入一条的速度在0.02s到0.04s之间。

所以逐条插入的速度是0.03*30000条的速度是15分钟左右。

所以逐条插入是没法优化的。然后去查询优化方式。发现用批量插入的方法可以提高很大速度。

将30000条数据的插入速度提升到1-2分钟左右

  @Test
    public void insertCjmxb() {
             Cjmxb cjmxb = new Cjmxb();
             cjmxb.setYtm("11111");
             cjmxb.setCjjlid(1);
             for (int i = 0; i < 1000; i++) {
                 cjmxbMapper.insertMx(cjmxb);
            }                     
    }

执行速度是38s也就是0.038*1000的速度。比较慢了

优化后批量插入数据库(推荐)

批量插入使用了0.0356s 这相当于插入一条数据的速度,所以用批量插入会大大提升数据插入速度,当有较大数据插入操作是用批量插入优化
批量插入的写法:
dao定义层方法

 	//插入到明细到采集明细表里
    Integer insertMx(List<Cjmxb> cjmxbs);

mybatis 的第一种写法sql写法(版本低的比如sqlserver2000就不支持)

<insert id="insertMx" parameterType="java.util.List"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值