一次对SQL修改,优化操作速度的记录
我需要把edit_stu表数据查出来批量插入到student_m中,
由于SQL批量操作执行速度特别慢,尝试更换SQL语句解决速度问题
根据需要我有两个方法做这个批量操作:
- 方法1:
<insert id="insert1" parameterType="java.util.HashMap">
begin
<foreach collection="list" item="item" index="index" separator=";">
insert into student_m ( VERSION_ID, SYS_ID)
values
( #{item.versionId,jdbcType=VARCHAR},
#{item.sysId,jdbcType=VARCHAR}
</foreach>
;end;
</insert>
- 方法2
<!--拷贝数据到查询表-->
<insert id="insertCurrentBySelect" parameterType="java.util.HashMap">
INSERT INTO student_m ( VERSION_ID, SYS_ID)
SELECT VERSION_ID, SYS_ID
FROM edit_stu
WHERE VERSION_ID=#{versionId,jdbcType=VARCHAR}
</insert>
两个方法操作速度对比:
数据量 | 方法1 | 方法2 |
---|---|---|
50 | 2s | 2.5s |
500 | 2.5s | 5.2s |