mysql 插入百万条数据
利用mysql内存表插入速度快的特点,先存储过程在内存表中生成数据,然后再从内存表插入普通表中,MyISAM 插入速度快与 innodb;mysql 5.7
一.创建内存表
CREATE TABLE `user_copy` (
`id` int(6) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` varchar(50) NOT NULL COMMENT '名称',
`pwd` varchar(32) NOT NULL COMMENT '密码',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`)
) ENGINE=MEMORY AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COMMENT='测试表';
二.创建普通表
CREATE TABLE `user_copy` (
`id` int(6) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`name` varchar(50) NOT NULL COMMENT '名称',
`pwd` varchar(32) NOT NULL COMMENT '密码',
`create_time` datetime DEFAULT NULL COMMENT '创建日期',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COMMENT='测试表';
三.创建一个函数,用于生成随机字符串,show function status; 查看函数
DELIMITER $$
DROP FUNCTION IF EXISTS rand_str;
-- 如果存在就删除
create FUNCTION rand_str(strlen SMALLINT )
-- 创建函数名 rand_str 参数为返回的长度
RETURNS VARCHAR(255)
-- 返回值
BEGIN
DECLARE randStr VARCHAR(255) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
-- 声明的字符串
DECLARE i SMALLINT DEFAULT 0;
-- 声明 i 循环变量
DECLARE resultStr VARCHAR(255) DEFAULT '';
-- 声明返回变量
WHILE i<strlen DO
SET resultStr=CONCAT(SUBSTR(randStr,FLOOR(RAND()*LENGTH(randStr))+1,1),resultStr);
SET i=i+1;
END WHILE;
RETURN resultStr;
END $$
DELIMITER ; 调用函数
select rand_str(10)
四.创建存储过程,show procedure status; 查看存储过程
DROP PROCEDURE IF EXISTS `add_user`;
DELIMITER $$
CREATE PROCEDURE `add_user`(IN n int)
BEGIN
DECLARE i int unsigned DEFAULT 0;
WHILE i < n DO
INSERT INTO `user_coupy`(name,pwd,create_time) VALUES (rand_str(15),MD5(123456),NOW());
SET i = i+1;
END WHILE;
END $$
DELIMITER ;
五.调用存储过程
CALL add_user(1000000);
由于mysql 默认内存允许容量小,会出现如下报错

windows 操作系统 找到 my.ini 修改 ,不同的集成环境,配置会有差别,修改max_heap_table_size = 1024M,或者添加进去即可,重启mysql,根据电脑性能不能所花时间不一样,thinkpad 8G 内存 i5 处理器 6分钟
六.插入到普通表中
INSERT into user SELECT * from user_copy;
mysql 插入百万条数据的更多相关文章
- PHP MySQL 插入多条数据
PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyG ...
- 使用 MySQLi 和 PDO 向 MySQL 插入多条数据
PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyG ...
- JDBC实现往MySQL插入百万级数据
想往某个表中插入几百万条数据做下测试, 原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很天真.... DROP PROCEDURE IF EXISTS proc_initData; ...
- 利用JDBC或者事物或者调用存储过程实现往MySQL插入百万级数据
转自:http://www.cnblogs.com/fnz0/p/5713102.html 想往某个表中插入几百万条数据做下测试, 原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很 ...
- 处理mysql上百万条数据的优化
php 处理上百万条的数据库如何提高处理查询速度 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字 ...
- Python-实现对表插入百万条数据
新手小白写的,我自己都不知道对不对,先写下来记着,以后掌握更多Python知识后,再来看下写的对不对. 题目:造一百万条大学生的基本信息(学校.专业.姓名.学号) 分析思路:利用Python的MySQ ...
- mysql插入多条数据时间复杂度比较
SQL脚本 select * from users; 方式一: insert into users(name, age, course_id) VALUES("test",1, & ...
- mysql用存储过程插入百万条数据, 及查询优化
查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...
- 给mysql一百万条数据的表添加索引
直接alter table add index 添加索引,执行一个小时没反应,并且会导致锁表:故放弃该办法,最终解决办法如下: 一.打开mysql 命令行客户端 这里我们那可以看到导出的数据文件所存放 ...
随机推荐
- JavaScript IIEF 模仿块级作用域
前言 JavaScript没有块级作用域的概念.但是通过IIEF 立即执行函数我们可以实现块级作用域. function outputNumbers(count){ for (var i=0; i & ...
- 携程apollo系列-客户端集成
本文讲解如何在 Java 程序中集成 Apollo 配置, 主要涉及到一些基础用法. 对于一些高级用法, 比如如何加密/解密配置项 (可用于数据库密码配置), 如何动态切换数据源地址,如何动态切换日志 ...
- 使用Notepad++开发Java程序
安装NppExec插件(已安装可跳过) 插件下载地址 我选择了最新的RC2 根据软件位数下载对应的版本,我直接下载了32位对应的dll 解压后里面有两个文件夹和一个dll文件 拷贝到Notepad++ ...
- JMX的l理解
一.JMX的一些定义与用途 Java Management Extensions:Java管理扩展,是管理系统和资源之间的一个接口,它定义了管理系统和资源之间交互的标准. 1.专门管理,监控jvm的一 ...
- Angular7
1.绑定html 在ts里面自定义一个html变量 html = '<a> 这是html变量 </a> '; 在html打印出来 直接打印:{{html}} <br /& ...
- Docker: repository, image, container
1. 查看image: docker images 2. 查看信息: docker info 3. 搜索image: docker search [image_name], 比如: docker se ...
- java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
♦ 问题所在:项目lib包里少一个jar包 ♦ 解决办法: commons-lang3-3.1.jar 导入到项目就ok
- centos7环境下apache2.2.34的编译安装
.获取apache2..34的源码包 http://archive.apache.org/dist/httpd/httpd-2.2.34.tar.gz .获取apache的编译参数 apache的编译 ...
- using 关键字的作用
我们都知道可以使用using关键字引入命名空间,例如:using namespace std; using还有个作用是在子类中引入父类成员函数. 1) 当子类没有定义和父类同名的函数(virtual也 ...
- MVC中 jquery validate 不用submit方式验证表单或单个元素
<script src="/Scripts/jquery-1.4.4.js"></script> <script src="/Scripts ...