MySQL 快速批量创建千万条数据 千万级数据
一、实现思路
1、创建一张users表,数据库引擎调整为: MyISAM
2、使用存储过程实现,用循环语句,批量插入1kw次。( WHILE ... DO ... END WHILE )
二、具体实现
1、创建users表
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` varchar(222) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`addr` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '地址',
`create_date` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COL
LATE = utf8_general_ci ROW_FORMAT = Dynamic;
2、创建 pro_users 存储过程
DROP PROCEDURE IF EXISTS pro_users ;
CREATE PROCEDURE pro_users()
BEGIN
DECLARE count int DEFAULT 0 ; -- 计数
DECLARE max int ; -- 插入数据条数
SET max = 10000000 ;
-- 开始执行循环
WHILE count < max DO
INSERT INTO `users` ( `name`, `age`, `addr`, `create_date` )
VALUES (CONCAT('小明',(LAST_INSERT_ID()+1)), 18, CONCAT('北京市',(LAST_INSERT_ID()+1)), NOW() );
SET count = count + 1;
END WHILE;
END ;
3、调用存储过程: call pro_users();
4、查看数据: SELECT * FROM users ;
三、总结
1、存储过程实现,注意需要将表的ENGINE 设置为:MyISAM 。
2、存储过程中,使用循环语句实现, WHILE , REPEAT , LOOP 任意一种都可以。
参考资料:MySQL存储引擎InnoDB与Myisam的六大区别
https://thinkcode.blog.csdn.net/article/details/102913056