就效率而言,单纯的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