mysql中怎么实现循环批量插入
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,mysql中怎么实现循环批量插入,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数据结构寻思着分页时标准列分主键列、索引列、普通列3种
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
河南抖音精控软件开发公司
珙县召开2020网络安全
合肥双赢网络技术公司怎么样
网络安全审计联系方式
学软件开发以后能干什么
计算机网络技术专业大学三年规划
2020软件开发不好找工作
网络安全僵尸
谈谈你心中的网络安全留言
青岛招聘软件开发
哈尔滨有做手机挖矿软件开发
与软件开发有关的大学
卧龙区网络安全进校园
江苏紫气天下网络技术公司
保护服务器安全设备
创客大讲堂软件开发心得
大连慧搜网络技术nhn
共用服务器的两路监控要几个硬盘
主机的数据库服务器地址
华为网络安全首席官视频
要网络安全宣传目的
英语不好学计算机网络技术
延续网络技术有限公司
修复数据库索引语句
数据库安全初始化快照
重庆软件开发询价公告
安徽通用软件开发价格对比
传奇私服数据库文件
c dll调用数据库
支付宝网络安全控件