很多条update语句mysql优化_MySQL批量update语句优化
对MySQL中的表进行批量update的时候,如果每个记录用一个update语句,5000条记录的话,大概需要30秒钟。下面采用的case when方法可以把5000条update拼成一条:
Update myTable
SET myField = CASE id
WHEN 1 THEN 'value1'
WHEN 2 THEN 'value2'
WHEN 3 THEN 'value3'
END
WHERE id IN (1,2,3)
具体的MyBatis代码如下:
UPDATE t_price
SET price = CASE code
WHEN #{item.code} THEN #{item.price}
END
WHERE
code in
#{item.code}
实际上,为了避免一条语句超过MySQL语句的最大长度限制,一般会把5000个数据分成几组,每组拼凑一条语句。因此,Java代码调用MyBatis的dao之前需要拆分被update的List,以避免sql语句超长。比如按1000条每组来拆分,使用Guava的工具类Lists中的partition方法:
import com.google.common.collect.Lists;
......
List>> list = (List>>) Lists.partition(orders, 1000);
int success = 0;
for (List> l : list) {
success += priceDao.updatePrice(l);
} 这样优化后,原来的5000条update语句,就被合并成了5条,执行时间缩短到了2秒钟以内。
很多条update语句mysql优化_MySQL批量update语句优化相关推荐
- mysql创建用户表的sql语句,mysql创建表的sql语句
mysql 动态sql语句,如何用一款小工具大大加速MySQL SQL语句优化(附源,mysql分页查询sql语句,mysql创建表的sql语句 mysql建表语句_计算机软件及应用_IT/计算机_专 ...
- mysql sql优化_MySQL数据库SQL语句优化原理专题(三)
需求 做过开发的同学,对分页肯定不会陌生,因为很多前台页面展示,为了更好的展示数据,就会用到分页,所以如何写一个高性能的分页SQL语句,是每一个开发人员需要掌握的技能. 分页SQL 这里给大家写一个分 ...
- mysql解释器优化_MySQL——SQL性能分析优化利器之Explain
系统性能的优劣取决于我们sql的查询速度,MySQL Explain命令是分析SQL性能及优化不可缺少的一部分. Explain被我们称为解释器,通过 explain 我们可以知道以下信息:表的读取顺 ...
- 数据库中update怎么用事例_MySQL中UPDATE语句使用的实例教程
一.UPDATE常见用法首先建立测试环境: DROP TABLE IF EXISTS t_test; CREATE TABLE t_test ( bs bigint(20) NOT NULL auto ...
- mysql 语句性能分析_mysql的sql语句的性能诊断分析
1> explain SQL,类似于Oracle中explain语句 例如:explain select * from nad_aditem; 2> select benchmark(co ...
- mysql切换用户sql语句,MySQL用户管理及SQL语句详解
[(none)]>select user,host frommysql.user; #查询用户和主机+---------------+-----------+ | user | host | + ...
- mysql 过程if语句,mysql存储过程之if语句用法实例详解
这篇文章主要介绍了mysql存储过程之if语句用法,结合实例形式详细分析了mysql存储过程中if语句相关原理.使用技巧与操作注意事项,需要的朋友可以参考下 本文实例讲述了mysql存储过程之if语句 ...
- mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作
在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...
- mysql 插入优化_MySQL批量SQL插入性能优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长.特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的. ...
最新文章
- android systemtrace 报错
- swift SDWebImage 与 UIButton 出现的细节bug 不显示
- Linux之CentOS的PHP为7.2但显示5.4版本
- dart系列之:在dart中使用数字和字符串
- c语言会员卡管理系统,路西牌会员管理系统。
- 将Quarkus应用程序部署到AWS Elastic Beanstalk
- android 4.4 下拉菜单 透明,4.2状态栏,下拉,全局透明教程
- 模块化加载_谈谈双亲委派模型的第四次破坏-模块化
- MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
- 穿透防火墙调用EJB--rmi-http在JBOSS中的应用
- 由外而内看敏捷软件开发(上)——从业务视角看敏捷
- VS2015打开cshtml视图页文件报错 未将对象引用设置为实例 解决办法
- FreeTextBox编辑器的问题
- 台式计算机打字标准手法,电脑打字技巧口诀
- 解决递归求快速排序时间复杂度计算
- html5版本过低,你的浏览器版本过低【解决步骤】
- 几款优秀的文档管理系统
- 古训:能控制早晨的人,方可控制人生(经典)
- github报fatal: Authentication failed解决方案(2021-08-13日之后)
- 打印机虚拟服务器,FinePrint_服务器版虚拟打印机程序 V6.13 Server 英文版