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

快速插入大量数据有两种思路:一是利用 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();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,109评论 2 89
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,039评论 25 709
  • 阳阳的屁股还是照样的痛,但是感觉小一点了,肿也是退了点,但是还是不能坐下来,所以得抱着,今早也不能带他出去玩,因为...
    的塞辟尔阅读 1,534评论 0 0
  • 若水是我和前夫的孩子,我们分开的时候,他才五岁,一直跟爷爷奶奶在一起生活。 到今年夏天他就十二岁了,也正处于从小学...
    吕燕阅读 5,482评论 13 7
  • 2018-3-12 一杯茶 一支烟 思落简篇 一枝枯 一蝉蜕 暗藏钩玄 一曲婉 一吟浅 晓霭暮岚 一眉蹙 一心动 ...
    山脚石阅读 2,383评论 0 1