Mysql批量插入数据

本文探讨了在Mysql中进行数据插入的方法,通过对比单条插入与批量插入(每次1000条)的方式,显示出批量插入显著提高了效率,如7000条数据批量插入仅需1640毫秒。

Mysql批量插入数据

今天我们来测试在MySql中使用多种方法来进行数据的插入并统计插入时间了差异
1、单条插入
首先我们先尝试最简单的方法,循环多次单条插入数据库:

int start=0;
        int num=0;
        while (true) {
            List<FactoryInfo> list = factoryInfoMapper.getByTime(startTime, endTime, start, start + 1000);
            if (list.size()==0) break;
            list.forEach(factoryInfo -> {
                newLandInfoMapper.UpdateNewlandTable(factoryInfo);
            });
            num+=list.size();
            start=num;
        }

经测试,全程插入7000条需要208071毫秒

2、批量插入

@Insert({"<script> " +
            "INSERT INTO factoryinfo(BoardID,MN,SN,CSN,KSN,TUSN,IMEI_1,IMEI_2,CCID_1,CCID_2,BTMAC,station)" +
            "values"+
            "<foreach collection=\"list\" item=\"item\" index=\"index\"  separator=\",\"> "+
            "(#{item.BoardID},#{item.MN},#{item.SN},#{item.CSN},#{item.KSN},#{item.TUSN},#{item.IMEI_1},#{item.IMEI_2},#{item.CCID_1},#{item.CCID_2},#{item.BTMAC},#{item.station})"+
            "</foreach> </script>"})
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    public int UpdateNewlandTableList(List<FactoryInfo> list);
    int start=0;
    int num=0;
    while (true) {
        List<FactoryInfo> list = factoryInfoMapper.getByTime(startTime, endTime, start, start + 1000);
        if (list.size()==0) break;
        newLandInfoMapper.UpdateNewlandTableList(list);
        num+=list.size();
        start=num;
    }
    return num;

修改成每条语句插入1000条,总共插入7000条,速度飞跃至1640毫秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值