mybatis中大数据量foreach插入效率对比

1.controller代码

    @RequestMapping("/testInsert")
    public String testInsert(Integer sum){
        testService.testInsert(sum);
        return "发送成功";
    }

2.service代码

 @Override
    public void testInsert(Integer sum) {
        long start = System.currentTimeMillis();
        List<TestDTO> list = new ArrayList<>();

        for (int i = 0; i < sum; i++) {
            TestDTO testDTO = new TestDTO();
            testDTO.setId(i);
            testDTO.setAgentId(2L*i);
            list.add(testDTO);
            if (i % 300 == 0){
                testMapper.testInsert(list);
                list.clear();
            }
        }
        if (ToolUtil.isNotEmpty(list)){
            testMapper.testInsert(list);
        }
        long end = System.currentTimeMillis();
        System.out.println("时间:"+(end - start)/1000);
    }

3.mapper代码

void testInsert(@Param("list") List<TestDTO> list);

4.xml代码

<insert id="testInsert">
    INSERT INTO tb_agent_test
        (id, agent_id)
    VALUES
    <foreach collection="list" item="testDTO" separator=",">
        (#{testDTO.id},#{testDTO.agentId})
    </foreach>
    </insert>

5.输出结果

测试数据十万条
在这里插入图片描述
每次100条,插入时间总共消耗95秒
在这里插入图片描述
每次200条,插入时间总共消耗51秒
在这里插入图片描述
每次300条,插入时间总共消耗35秒
在这里插入图片描述
每次400条,插入时间总共消耗27秒

在这里插入图片描述
每次500条,插入时间总共消耗23秒
在这里插入图片描述

每次600条,插入时间总共消耗18秒

在这里插入图片描述

每次700条,插入时间总共消耗17秒

在这里插入图片描述

每次800条,插入时间总共消耗14秒

在这里插入图片描述

每次900条,插入时间总共消耗14秒

在这里插入图片描述

每次1000条,插入时间总共消耗12秒

在这里插入图片描述

每次1100条,插入时间总共消耗12秒

在这里插入图片描述

每次1200条,插入时间总共消耗11秒
在这里插入图片描述

每次1300条,插入时间总共消耗10秒
在这里插入图片描述

每次1400条,插入时间总共消耗10秒
在这里插入图片描述

每次1500条,插入时间总共消耗9秒
在这里插入图片描述

每次2000条,插入时间总共消耗7秒

在这里插入图片描述

每次3000条,插入时间总共消耗7秒

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值