就效率而言,单纯的SQL是最快的,只要索引建好了left join也不会太过影响速度,但是遇到SQL解决不了的复杂关系时还是需要借助程序去更新,这时候就要进行一定的优化处理。 总结一下 1. 能用SQL直接运行就直接运行...
最近由于公司项目版本升级,库也有较大的改动,以前的数据需要迁移到新库中,其中又多了许多关联关系。
就效率而言,单纯的SQL是最快的,只要索引建好了left join也不会太过影响速度,但是遇到SQL解决不了的复杂关系时还是需要借助程序去更新,这时候就要进行一定的优化处理。
总结一下
一种是批量提交,mybatis中就是用for each一下提交多条SQL语句,这种方法需要在数据库连接属性加上allowMultiQueries=true,如spring.datasource.url=jdbc:mysql://192.168.0.88:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true
还有一种是case when的方法,如
<update id="moveUsers" parameterType="java.util.List">
update wcaccounts
<trim prefix="set" suffixOverrides=",">
<trim prefix="creators = case " suffix=" end,">
<foreach collection="accounts" item="item" index="index">
when id=#{item.id} then #{item.creators}
</foreach>
</trim>
<trim prefix="dept_ids = case " suffix=" end,">
<foreach collection="accounts" item="item" index="index">
when id=#{item.id} then #{item.deptIds}
</foreach>
</trim>
</trim>
where id in
<foreach collection="accounts" item="item" index="index"
open="(" close=")" separator=",">
#{item.id}
</foreach>
</update>
做完这五点,更新效率应该可以得到显著的提升。
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com