批量update如何优化

 时间:2026-02-14 04:30:11

1、对MySQL中的表进行批量update的时候,如果每个记录用一个update语句,5000条记录的话,大概需要30秒钟。下面采用的case when方法可以把5000条update拼成一条:

[plain] view plain copy

Update myTable  

  SET myField = CASE id  

    WHEN 1 THEN 'value1'  

    WHEN 2 THEN 'value2'  

    WHEN 3 THEN 'value3'  

批量update如何优化

2、  END  

WHERE id IN (1,2,3)  

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代码如下:

[html] view plain copy

<update id="updatePrice" parameterType="java.util.List">  

    UPDATE t_price  

    SET price = CASE code  

    <foreach collection="list" item="item">  

   

批量update如何优化

3、     WHEN #{item.code} THEN #{item.price}  

    </foreach>  

    END  

    WHERE  

        code in  

        <foreach collection="list" item="item" open="(" separator="," close=")">  

         #{item.code}   

        </foreach>  

</update>  

<update id="updatePrice" parameterType="java.util.List">

UPDATE t_price

批量update如何优化

4、SET price = CASE code

<foreach collection="list" item="item">

WHEN #{item.code} THEN #{item.price}

</foreach>

END

WHERE

code in

<foreach collection="list" item="item" open="(" separator="," close=")">

#{item.code}

</foreach>

</update>

批量update如何优化

5、实际上,为了避免一条语句超过MySQL语句的最大长度限制,一般会把5000个数据分成几组,每组拼凑一条语句。因此,Java代码调用MyBatis的dao之前需要拆分被update的List,以避免sql语句超长。

批量update如何优化

  • 花小猪省钱卡怎么买
  • 堡垒之夜手游什么时候上线
  • 2T移动硬盘在XP电脑上不识别
  • 周敦颐是哪个朝代的
  • 拒执罪如何立案
  • 热门搜索
    颤动的意思 npt是什么意思 什么牌子的地板好 海市蜃楼是什么意思 思密达是什么意思 恐惧的意思 万圣节什么意思 慈善的意思 春花秋月的意思 繁华的意思