美文网首页
mysql 快速插入 100W 条数据之使用存储过程

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

作者: Jason_M_Ho | 来源:发表于2018-10-04 22:58 被阅读0次

    快速插入大量数据有两种思路:一是利用 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();
    

    相关文章

      网友评论

          本文标题:mysql 快速插入 100W 条数据之使用存储过程

          本文链接:https://www.haomeiwen.com/subject/btsfaftx.html