起源

在公司优化SQL遇到一个索引的问题,晚上回家想继续验证,无奈没有较多数据的表,于是,想造一些随机的数据,用于验证。

于是

于是动手写。由于自己不是MySQL能手,写得也不好。最后,插入的速度也不快,我使用的是MySQL的InnoDB引擎,电脑跑了差不多一通宵才插入100W数据(为自己的程序汗颜)。虽然这样,我还是再次保留这份代码,以防下次要使用。嘿嘿。(插入时切换成MyISAM引擎,插入速度会快很多,插入完毕再切换回来)

这里开始,备份我的代码

需要插入数据的表:

create table `t_member` (
`id` int (11),
`member_no` varchar (36),
`user_name` varchar (384),
`register_date` datetime
);

生成随机数字的函数:

DELIMITER $$

USE `demo`$$

DROP FUNCTION IF EXISTS `f_rand_num`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `f_rand_num`(
start_num BIGINT,
end_num BIGINT
) RETURNS bigint(20)
BEGIN
RETURN FLOOR(start_num + RAND() * (end_num - start_num + 1));
END$$ DELIMITER ;

生成随机N位字符串的函数:

DELIMITER $$

USE `demo`$$

DROP FUNCTION IF EXISTS `f_rand_str`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `f_rand_str`(l INT) RETURNS varchar(256) CHARSET utf8
BEGIN
DECLARE chars_range varchar(128) DEFAULT 'abcdefghijklmnopqrstuvwxyz';
DECLARE random_str varchar(256) DEFAULT '';
DECLARE i INT DEFAULT 0; WHILE i < l DO
SET random_str = concat(random_str, char(ascii('a') + f_rand_num(0, 25)));
SET i = i +1;
END WHILE; RETURN random_str;
END$$ DELIMITER ;

插入数据的存储过程:

DELIMITER $$

USE `demo`$$

DROP PROCEDURE IF EXISTS `p_make_data`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `p_make_data`(l INT)
BEGIN
DECLARE i INT DEFAULT 0; WHILE i < l DO
insert into `t_member` (`member_no`, `user_name`, `register_date`)
values(f_rand_num(100000000000, 999999999999), f_rand_str(8), '2016-08-01');
SET i = i + 1; IF (i % 1000 = 0) THEN
select @i;
END IF; END WHILE;
END$$ DELIMITER ;

附一些测试SQL:

-- 调用过程
call p_make_data(500000); -- 一些测试SQL
select f_rand_num(100000000000, 999999999999);
select f_rand_str(8);
select ORD('97');
select substring('hello', 5, 1);
select ascii('a');
select char(97);
select 100 % 5;
select count(1) from t_member t order by t.`id` desc;

后来的话(非常重要哦!)

后来参考了一篇文章,它提及,转换为MyISAM引擎插入数据速度会快很多,插入完毕后再转换回来InnoDB引擎使用,另外文章中还提及了一些提高速度的小诀窍,大家可以去看:mysql快速保存插入大量数据一些方法总结

【MySQL】MySQL快速插入大量数据的更多相关文章

  1. MySQL如何快速插入数据

    前言: 日常学习和工作中,经常会遇到导数据的需求.比如数据迁移.数据恢复.新建从库等,这些操作可能都会涉及大量数据的导入.有时候导入进度慢,电脑风扇狂转真的很让人崩溃,其实有些小技巧是可以让导入更快速 ...

  2. Sql Server数据库之通过SqlBulkCopy快速插入大量数据

    废话不多说,直接上代码 /// <summary> /// 海量数据插入方法 /// </summary> /// <param name="connectio ...

  3. mysql快速插入大数据

    说的是插入数据,这个倒像是载入数据. 上一篇,是按照插入数据来写的,就是insert into,当时插入一万条实在是太慢了,大概是286734毫秒. insert into table values, ...

  4. MySQL数据库快速造大量数据

    这段时间做性能测试,发现数据都是分库写进数据库了,并且要构造大量数据,大概4000万的数据量,用普通的方法,写个MySQL函数,之前测试过,大概200万数据也要跑一个多小时,太慢了. 后面研究发现有个 ...

  5. Mysql如何快速插入100万条记录?

    1.java程序拼接insert带多个value,使一次提交多个值. 2.插入数据之前先删除索引(注意主键不能删除),然后插入数据,最后重建索引 3.可以设置手动commit,用来提高效率 4.使用批 ...

  6. MySQL获取刚插入的数据

    1. 通过自增的键auto_increment取得. select max(id) from tablename 这样的做法须要考虑并发的情况.须要在事务中对主表加以"X锁",待获 ...

  7. mysql数据库表插入单条数据/批量插入数据

    1.创建表格 reate table trade( id int(4) not null primary key auto_increment, product varchar(30) null, p ...

  8. SQL Server 2012中快速插入批量数据的示例及疑惑

    SQL Server 2008中SQL应用系列--目录索引 今天在做一个案例演示时,在SQL Server 2012中使用Insert语句插入1万条数据,结果遇到了一个奇怪的现象,现将过程分享出来,以 ...

  9. 使用IDEA快速插入数据库数据的方法

    如上图所示:数据库创建表主键使用了自增列自增因此忽略,只有后两列非主键得数据,在数据较多得时候使用IDEA快捷键Ctrl+R键,快速查找替换.

随机推荐

  1. js 查找关键字

    查找:4种: 1. 查找固定关键字,仅返回位置,可指定开始位置: var i=str.indexOf("kword"[,starti]); str.lastIndexOf(&quo ...

  2. IO 磁盘总结

    IO 磁盘 1.读取 首先引用一个using System.IO;引用空间其次 string ste= File.ReadAllText("E:\\bt.txt",Encoding ...

  3. JavaScript入门篇 第一天

    使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要成对出现,并把JavaScript代码写在<script>< ...

  4. Empire C:游戏篇(1)

    随机生成1-6的数字,我们来猜是几 猜小了就提示数字小了,请再猜 猜大了就提示数字大了,请再猜 猜对了就提示恭喜,并提示是否继续再玩 ///riddle ///Author:JA //2015-1-2 ...

  5. 【iCore3 双核心板_FPGA】例程九:状态机实验——状态机使用

    实验指导书及代码包下载: http://pan.baidu.com/s/1o72i3mq iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  6. FastDFS connect timed out

    java.net.SocketTimeoutException: connect timed outUpload file "1003.png"fails:connect time ...

  7. [转]如何将SQL Server表驻留内存和检测

    注意这个功能在SQL2005后已经废弃,因为SQL2005会自动管理哪些表常驻内存. 将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及 ...

  8. 相识从C语言开始

    大家好,我是你们这学期C语言的助教吴科桥(女O(∩_∩)O),非常开心能在你们美好的大学这站与你们相遇,希望可以为你们学习C语言略尽绵薄之力. 开学第一周: 1. 希望每个同学都可以有自己的博客,我会 ...

  9. Mac更换Sublime Text程序图标

    更换方法: 下载.icns格式一个图标.http://www.easyicon.net/language.en/iconsearch/sublime/ 终端执行:open /Applications/ ...

  10. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...