mysql中怎么实现循环批量插入
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,mysql中怎么实现循环批量插入,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数据结构寻思着分页时标准列分主键列、索引列、普通列3种
千家信息网最后更新 2026年10月31日mysql中怎么实现循环批量插入
mysql中怎么实现循环批量插入,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
数据结构
寻思着分页时标准列分主键列、索引列、普通列3种场景,所以,测试表需要包含这3种场景,建表语法如下:
drop table if exists `test`.`t_model`;Create table `test`.`t_model`( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '自增主键', `uid` bigint COMMENT '业务主键', `modelid` varchar(50) COMMENT '字符主键', `modelname` varchar(50) COMMENT '名称', `desc` varchar(50) COMMENT '描述', primary key (`id`), UNIQUE index `uid_unique` (`uid`), key `modelid_index` (`modelid`) USING BTREE) ENGINE=InnoDB charset=utf8 collate=utf8_bin;
为了方便操作,插入操作使用存储过程通过while循环插入有序数据,未验证其他操作方式或循环方式的性能。
执行过程
1、使用最简单的方式直接循环单条插入1W条,语法如下:
drop procedure if exists my_procedure; delimiter //create procedure my_procedure()begin DECLARE n int DEFAULT 1; WHILE n < 10001 DO insert into t_model (uid,modelid,modelname,`desc`) value (n,CONCAT('id20170831',n),CONCAT('name',n),'desc'); set n = n + 1; END WHILE;end// delimiter ;插入1W条数据,执行时间大概在6m7s,按照这个速度,要插入1000W级数据,估计要跑几天。
2、于是,构思加个事务提交,是否能加快点性能呢?测试每1000条就commit一下,语法如下:
delimiter //create procedure u_head_and_low_pro()begin DECLARE n int DEFAULT 17541; WHILE n < 10001 DO insert into t_model (uid,modelid,modelname,`desc`) value (n,CONCAT('id20170831',n),CONCAT('name',n),'desc'); set n = n + 1; if n % 1000 = 0 then commit; end if; END WHILE;end//delimiter ;执行时间 6 min 16 sec,与不加commit执行差别不大,看来,这种方式做批量插入,性能是很低的。
3、使用存储过程生成批量插入语句执行批量插入插入1W条,语法如下:
drop procedure IF EXISTS u_head_and_low_pro;delimiter $$create procedure u_head_and_low_pro()begin DECLARE n int DEFAULT 1; set @exesql = 'insert into t_model (uid,modelid,modelname,`desc`) values '; set @exedata = ''; WHILE n < 10001 DO set @exedata = concat(@exedata,"(",n,",","'id20170831",n,"','","name",n,"','","desc'",")"); if n % 1000 = 0 then set @exesql = concat(@exesql,@exedata,";"); prepare stmt from @exesql; execute stmt; DEALLOCATE prepare stmt; commit; set @exesql = 'insert into t_model (uid,modelid,modelname,`desc`) values '; set @exedata = ""; else set @exedata = concat(@exedata,','); end if; set n = n + 1; END WHILE;end;$$ delimiter ;关于mysql中怎么实现循环批量插入问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
循环
数据
方式
性能
语法
过程
问题
场景
时间
更多
存储
帮助
测试
解答
易行
普通
有序
简单易行
不大
业务
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技
嘟嘟瓜互联网科技
互联网金融科技创新
唐信互联网科技 大连
齐家互联网科技有限公司
科技互联网创业计划书
丰台科技园 互联网公司
汉立互联网科技有限公司联系电话
济南和联互联网科技有限公司
广州恒生互联网科技有限
互联网科技公司营业执照怎么办理
山东有哪些互联网科技公司
互联网科技数字货币
互联网科技融合创新
济南小医互联网科技有限公司招聘
广州梦谷互联网科技有限公司领导
容联科技互联网电商
互联网科技大佬云集
互联网科技创新方面的资料
科技发展第三阶段互联网时代
互联网佳科技有限公司
互联网最新的科技
腾讯阿里互联网科技
互联网科技网站
佩信高科技互联网
米聚互联网科技南京有限公司排面
玉溪新华互联网科技好不好
伊宁互联网科技做什么的
互联网科技快讯热点
小牛互联网科技有限公司地址