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

1万+

被折叠的 条评论
为什么被折叠?



