Mysql使用存储过程快速添加百万数据

news/2024/7/2 23:41:09
这篇文章主要介绍了Mysql使用存储过程快速添加百万数据,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

前言

为了体现不加索引和添加索引的区别,需要使用百万级的数据,但是百万数据的表,如果使用一条条添加,特别繁琐又麻烦,这里使用存储过程快速添加数据,用时大概4个小时。

创建一个用户表

CREATE TABLE `t_sales` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '用户名',`password` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '密码 MD5存储',`register_time` timestamp NULL DEFAULT NULL COMMENT '注册时间',`type` int(1) DEFAULT NULL COMMENT '用户类型 1,2,3,4 随机',PRIMARY KEY (`id`),KEY `idx_username` (`username`) USING BTREE
)

然后创建存储过程,批量添加数据。

用户名以常量和数字拼接

密码是MD5密码

注册时间是当前时间随机往前推几天

type是取1-4随机范围值

create procedure salesAdd()
begindeclare i int default 11;while i <= 4000000 doinsert into blog.t_sales(`username`,`password`,`register_time`,type) values(concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(now()) - floor(rand() * 800000)),floor(1 + rand() * 4)); set i = i + 1; end while; 
end

然后调用存储过程

call salesAdd()

改进版

虽然使用存储过程添加数据相对一个个添加更加便捷,快速,但是添加几百万数据要花几个小时时间也是很久的,后面在网上找到不少资料,发现mysql每次执行一条语句都默认自动提交,这个操作非常耗时,所以在在添加去掉自动提交。设置 SET AUTOCOMMIT = 0;

create procedure salesAdd()
begindeclare i int default 1;set autocommit = 0;   while i <= 4000000 doinsert into blog.t_sales(`username`,`password`,`register_time`,type) values(concat("jack",i),MD5(concat("psswe",i)),from_unixtime(unix_timestamp(now()) - floor(rand() * 800000)),floor(1 + rand() * 4)); set i = i + 1; end while;set autocommit = 1;     
end

执行时间387秒,约为六分钟,其中还有一半时间用于md5、随机数的计算。

[SQL]
call salesAdd();
受影响的行: 0
时间: 387.691s

到此这篇关于Mysql使用存储过程快速添加百万数据的文章就介绍到这了


http://lihuaxi.xjx100.cn/news/283895.html

相关文章

程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器

作者 | 琥珀出品 | AI科技大本营&#xff08;id&#xff1a;rgznai100&#xff09;基于深度神经网络进行语音合成、音乐风格迁移&#xff0c;正成为不少致力于“让人人成为音乐家”的研究人员所追求的事情。像此前我们报道的微软小冰作词又作曲&#xff0c;AI帮清华博士写说唱歌…

【MySQL】MySQL的索引

目录索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 索引最常用的数据结构索引 1.1 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引&#xff0c; 并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 1…

钉钉被小学生逼疯,拍片在线求饶哈哈哈哈

这已经是钉钉一星事件的第三次转折了。哈哈哈哈哈哈哈哈哈哈为什么哈哈哈哈哈或或或或或或或或或或或哈哈哈哈哈哈哈哈哈哈为什么哈哈哈真的一次比一次好笑我要是钉钉我真的欲哭无泪&#xff0c;谁能想到我一个这么强大的APP有一天被小学生逼得启动了危机公关。帮不了解全过程的…

iOS单独集成QQ分享功能

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;1&#xff09;首先&#xff0c;把TencentOpenAPI.framework、TencentOpenApi_IOS_Bundle.bundle导入工程中。 &#xff08;ps&#xff0c;我在搜索资料时&#xff0c;看到有人说TencentOpenAPI.framework要放…

如何用python实现邮箱发送信息

这篇文章主要为大家详细介绍了python实现邮箱发送信息&#xff0c;文中示例代码介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 本文实例为大家分享了python实现邮箱发送信息的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下…

清晰易懂的Focal Loss原理解释

来源&#xff1a;https://www.cnblogs.com/king-lps/p/9497836.html编辑&#xff1a;石头1. 总述Focal loss主要是为了解决one-stage目标检测中正负样本比例严重失衡的问题。该损失函数降低了大量简单负样本在训练中所占的权重&#xff0c;也可理解为一种困难样本挖掘。2. 损失…

pytest接口测试之fixture传参数request

本文主要介绍了pytest接口测试之fixture传参数request的使用&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下 前言 有的测试用例&#xff0c;需要依赖于某些特定的case才可以执行&#xff0c;比如登录获取…

【MySQL】MySQL的事务

事务 目录事务1.1 为什么使用事务&#xff1f;1.2 事务的概念1.3 使用2.事务的基本特性2.1 脏读问题&#xff1a;2.2 不可重复读&#xff1a;2.3 幻读问题&#xff1a;2.4 MySQL中事务的隔离级别1.1 为什么使用事务&#xff1f; 准备测试表&#xff1a; drop table if exists…