批量插入数据SQL写法,批量处理数据
今天在进行功能优化中遇到了碰到了一个功能,要处理10万条数据。在最开始开发时没有考虑那么多直接以单条数据来处理没有考虑到大批量数据的情况,导致功能不符合预期。那就优化呗。。。
首先考虑。减少与数据库的交互,把之前的一条一条查的代码优化为一次性全部查出,然后在批量处理数据。如果数据量太大(超2万)直接用SQL去批量处理有可能会报错,那是因为数据库单次处理数据的能力有限所以可以分批次处理。下面贴上示例;
**1:**批量插入数据的SQL ,xml文件编写

<!--批量插入--><insert id="insertBanch">insert into "SZFMIMP"."T_STOCK_HISTORY_RESULT" (id,zccl,sbsj,sss,ssqh,crsj,kddm,kdmc,type,lspzid,lspzmc,qymc,qytyshxydm)values<foreach collection="list" item="item" index="index" separator=",">( #{item.id},#{item.zccl},#{item.sbsj},#{item.sss},#{item.ssqh},#{item.crsj},#{item.kddm},#{item.kdmc},#{item.type},#{item.lspzid},#{item.lspzmc},#{item.qymc},#{item.qytyshxydm})</foreach></insert>

2: 查出的几万条数据分批次批量插入,时间会比单条处理效率快很多。亲测在没有优化前5万条数据处理需要大概3分钟左右。优化批量处理后处理时间缩短至5秒。

List<StockHistoryResultPo> list = stockInMapper.getFoodCount(lsxzList).parallelStream().map(tmp -> {StockHistoryResultPo stockHistoryResultPo = new StockHistoryResultPo();//数据转换:仅做参考}).collect(Collectors.toList());stockHistoryResultMapper.delete(new LambdaQueryWrapper<StockHistoryResultPo>().eq(StockHistoryResultPo::getType,2));int count = 2000;List<StockHistoryResultPo> list1 = new ArrayList<>();for (int i = 0; i < list.size(); i++) {list1.add(list.get(i));if((count == list1.size()) || (i == list.size() - 1)){//一次处理2000条数据,处理到最后一条数据跳出循环int j = stockHistoryResultMapper.insertBanch(list1);if(j > 0){log.info("批量数据为:{}",JSON.toJSON(list1));}//清除集合list1.clear();}}

内容仅为个人学习笔记记录,仅供参考!如有更好的思路和写法欢迎指导。

批量插入数据SQL写法,批量处理数据相关推荐

  1. Oracle数据库:实现批量插入的sql语句

    目录 问题现象: 问题分析: 注意:这里一定要注意分号(;)的使用: 否则容易出现报错,如: 解决方法: 问题现象: 今天想使用Oracle数据库进行批量插入的操作,发现和想象中的不太一样,报错如下: ...

  2. Sql批量插入时如果遇到相同的数据怎么处理

    测试数据 -- 创建测试表1 CREATE TABLE `testtable1` ( `Id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `UserId` I ...

  3. mysql构建器 批量插入_mysqlbatch: mysql的批量执行工具,可以在多台mysql服务器上执行指定的SQL语句,支持sharding,比如在sharding之后的表上批量创建索引...

    MySQL Sharding 批量执行工具 主要功能 批量建库.批量建表.批量执行SQL脚本(创建索引.修改表结构).Sharding使用情况分析 使用方法 python ./mysqlbatch.p ...

  4. oracle批量插入ORA-00933: SQL 命令未正确结束

    oracle 不支持 insert into 表名 (column1,column2,column3)values (value1,value2,value3),((value1,value2,val ...

  5. c mysql批量插入优化_MySQL实现批量插入以优化性能的教程

    这篇文章主要介绍了MySQL实现批量插入以优化性能的教程,文中给出了运行时间来表示性能优化后的对比,需要的朋友可以参考下 对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时 ...

  6. Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除

    今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...

  7. mysql批量插入跟更新_Mysql批量插入和更新的性能-问答-阿里云开发者社区-阿里云...

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  8. mysql批量插入跟更新_Mysql批量插入和更新的性能

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  9. php mongodb 批量插入,MongoDB不支持批量插入

    mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行操作,但它没有像mysql那样insert(value.value.value...)那样的语法,也不支持transac ...

最新文章

  1. Banner长得丑,网站没朋友
  2. php中类的构造函数是,PHP 类的构造函数和析构函数
  3. Java匿名内部类总结
  4. [原创]状态值在数据库中的检索
  5. c#读取整数空格_C ++程序声明,读取和打印动态整数数组
  6. ie浏览器ip代理怎么设置
  7. 【实习生笔试面试题】2013年搜狐SOHU实习生技术笔试题
  8. UI设计素材 | 多用途APP项目管理移动应用UI套件
  9. plsql developer无监听程序_252百战程序员022天
  10. 软件测试项目实战案例ppt,一个自动测试实战项目案例.ppt
  11. clonezilla使用_如何使用Clonezilla备份和恢复已死或即将死去的系统磁盘
  12. 你要的理论、法则、定律、效应都在这里了
  13. 领航机器人广告段子_医院机器人物流科技宣传广告语
  14. 腾讯QQ邮箱、网易163邮箱配置客户端(Windows自带邮件)教程
  15. qemu与宿主机网络通信配置
  16. 阳春三月,正是樱花绽放时,借此机会给午饭献上鲜艳艳的视觉盛宴!
  17. 《D o C P》学习笔记(3 - 0)Regular Expressions, other languages and interpreters - 简介
  18. 爬取拉钩网60条招聘信息并存入数据库
  19. Excel文件解析性能对比(POI,easyexcel,xlsx-streamer)
  20. 基于51单片机的篮球计分器

热门文章

  1. 《Spark大数据技术与应用》肖芳 张良均著——课后习题
  2. 三菱伺服定长追剪,系统为Q172DSCPU 包含一个程序例子,有详细的机械参数分析,伺服参数设置
  3. 沃美即将发生巨变 广宇等人果断离去
  4. 微信小程序纯css制做跑马灯效果
  5. 知善之为善,斯不善已
  6. 解决nginx文件服务器访问403
  7. ASP.NET Core RESTful风格学习总结(五万字持续更新)
  8. YOLOV7改进--增加小目标检测层
  9. CC00037.bigdatajava——|Java方法封装.V19|——|Java.v19|封装实现.v02|
  10. java实现每日给女友微信发送早安等微信信息