mysql 快速插入 100W 条数据之使用存储过程

2018-10-04  本文已影响0人  Jason_M_Ho

快速插入大量数据有两种思路:一是利用 java 代码实现;一是利用数据库的存储过程。

今天说一说如何利用存储过程快速插入数据。

SQL 语句需要先编译然后执行,而存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字来调用执行它。

存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。

使用存储过程可以很方便快捷的插入大量的测试数据,实测使用存储过程存放 100 万条数据,耗时 31 秒。下面就来看一下具体的操作过程:

首先,当然是建一个数据表,注意数据表的引擎使用的是 MyISAM:

CREATE TABLE `tb_user` (
         `id` BIGINT (20),
         `user_name` VARCHAR (200),
         `user_password` VARCHAR (200),
         `birth` DATETIME ,
         `sex` CHAR (4),
         `email` VARCHAR (200),
         `mobile` VARCHAR (200),
         `create_date` DATETIME ,
         `update_date` DATETIME ,
         `description` VARCHAR (800)
) ENGINE=MyISAM;

创建存储过程:

DELIMITER $$
CREATE
 PROCEDURE `testdb`.`pro_tb_user`()
    BEGIN
     DECLARE i INT;
     SET i=0;
     WHILE  i>=0 && i<= 1000000 DO
           INSERT INTO testdb.`tb_user`
                   (`id`, `user_name`, `user_password`, `birth`, `sex`, `email`, `mobile`, `create_date`, `update_date`, `description`) VALUES
                   (i,'admin','123456',NOW(),'M','admin@qq.com','13812345678',NOW(),NOW(),'超级管理员');
           SET i=i + 1;
     END WHILE;
     
    END$$

DELIMITER ;

调用存储过程:

call pro_tb_user();
上一篇 下一篇

猜你喜欢

热点阅读