一次insert插入多条数据比insert循环插入数据效率高多少?

在MySQL中,‌一次插入多条数据的效率显著高于单条插入‌。实验数据显示,当插入30条数据时,批量插入速度比单条插入快近9倍。

效率差异原因

  1. 数据库操作次数‌:批量插入减少数据库写操作和网络传输次数,而单条插入需要执行相同次数的数据库操作。 ‌
  2. 日志写入优化‌:批量插入可减少MySQL二进制日志(binlog)和事务日志的写入量,降低磁盘写入频率。 ‌
  3. 网络传输成本‌:批量插入减少网络传输次数,尤其在网络条件较差时优势更明显。

适用场景建议

  • 优先批量插入‌:适用于数据量较大(如超过10条记录)的场景,可大幅提升效率并降低资源消耗。 如:
  1.  
<mapper namespace="com.soft.mapper.EmpExprMapper">

    <!--批量保存员工工作经历信息
    foreach 标签:
        collection: 遍历的集合
        item: 遍历出来的元素
        separator: 每次循环之间的分隔符
    -->
    <insert id="insertBatch">
        insert into emp_expr(emp_id, begin, end, company, job) values
        <foreach collection="exprList" item="expr" separator=",">
            (#{expr.empId},#{expr.begin},#{expr.end},#{expr.company},#{expr.job})
        </foreach>
    </insert>

</mapper>
  • 单条插入场景‌:若数据量较小或需精确控制每条记录的错误处理(如业务要求高可用性),可选择单条插入。如: ‌
            for (EmpExpr empExpr : exprList) {
                empExpr.setEmpId(emp.getId());
                empMapper.addEmpExpr(empExpr);
            }
posted @ 2025-10-03 12:17  休玛  阅读(12)  评论(0)    收藏  举报