具体逻辑实现:
创建两个表,一个内存表,一个数据表
然后将百万数据先存入内存表,再在内存表数据导入数据表
数据库默认好像只能存13万条数据,更改ini配置
max_heap_table_size = 1024M
前提:关闭mysql服务,在操作,重启

具体SQL语句:

# 创建内存表
CREATE TABLE `vote_record_memory` (  `id` INT (11) NOT NULL AUTO_INCREMENT,  `user_id` VARCHAR (20) NOT NULL,  `vote_id` INT (11) NOT NULL,  `group_id` INT (11) NOT NULL,  `create_time` datetime NOT NULL,  PRIMARY KEY (`id`),  KEY `index_id` (`user_id`) USING HASH  ) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;# 创建数据写入表
CREATE TABLE `vote_record` (  `id` INT (11) NOT NULL AUTO_INCREMENT,  `user_id` VARCHAR (20) NOT NULL,  `vote_id` INT (11) NOT NULL,  `group_id` INT (11) NOT NULL,  `create_time` datetime NOT NULL,  PRIMARY KEY (`id`),  KEY `index_user_id` (`user_id`) USING HASH  ) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;# 更改SQL语句结束符
delimiter |# 创建SQL函数,用于生成百万条数据
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1  BEGIN   DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';   DECLARE return_str varchar(255) DEFAULT '' ;  DECLARE i INT DEFAULT 0;   WHILE i < n DO   SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));  SET i = i +1;   END WHILE;   RETURN return_str;   END |# 生成百万条数据至内存表 2min16s
CREATE  PROCEDURE `add_vote_memory`(IN n int)  BEGIN    DECLARE i INT DEFAULT 1;  WHILE (i <= n ) DO  INSERT into vote_record_memory  (user_id,vote_id,group_id,create_time ) VALUEs (rand_string(20),FLOOR(RAND() * 1000),FLOOR(RAND() * 100) ,now() );  set i=i+1;  END WHILE;  END |# 再次将语法结束符改回来
delimiter ;# 将内存中的百万数据插入数据表 0.37s
CALL add_vote_memory(1000000);INSERT into vote_record SELECT * from  vote_record_memory;

如何往数据库快速插入百万条数据相关推荐

  1. 百万条数据插入mysql_mysql快速插入百万条数据

    作者:在赤道吃冰棍儿 www.jianshu.com/p/36b87cb3a05a 前言 假设现在我们要向mysql插入500万条数据,如何实现高效快速的插入进去?暂时不考虑数据的获取.网络I/O.以 ...

  2. mysql十万条数据_2秒内向数据库中插入十万条数据?

    怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...

  3. 【SpringBoot项目中使用Mybatis批量插入百万条数据】

    SpringBoot项目中使用Mybatis批量插入百万条数据 话不多说,直接上代码,测试原生批处理的效率 开始测试 背景:因为一些业务问题,需要做多数据源,多库批量查询.插入操作,所以就研究了一下. ...

  4. mysql 存储过程查询优化_mysql用存储过程插入百万条数据, 及查询优化

    查看所有存储过程: show procedure status; 查看详细存储过程 ptest: show create procedure ptest; 存储过程插入数据: create table ...

  5. Mysql数据库快速插入亿级数据

    Mysql数据库快速插入亿级数据 接手一个项目,该项目运行了两三年了.接手的时候,只有一个部署文档和全部代码,再没有其他文档了,也没有其他任何人了解这个项目.好吧,试着深入了解吧.代码在测试环境跑来了 ...

  6. MySQL十秒插入百万条数据

    mysql数据库准备 private String Driver = "com.mysql.cj.jdbc.Driver";private String url ="jd ...

  7. 怎么快速插入 100 条数据,用时最短

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:孤独键客 https://juejin.im/post/5d ...

  8. 怎么快速插入 100 条数据,用时最短!

    原文:https://my.oschina.net/OutOfMemory/blog/3117737 群友又抛出了一道面试题,有人给出了答案,看完后,是否还有改进的地方,留言评论,一起精进吧! 多线程 ...

  9. python往数据库批量插入多条数据

    1.需要定义构造函数(init),给实例属性赋值(包括host.port.user.password和database) 2.连接数据库 3.插入数据,先在数据库中建好表,并且添加好所需要的字段 4. ...

最新文章

  1. 可在广域网部署运行的QQ高仿版 -- GG叽叽(开源)
  2. 中国物联网2020年将达到1660亿美元的市场规模
  3. 设计器的使用及常用控件
  4. c语言中图形驱动程序功能_C / C ++中的图形:一些更有趣的功能
  5. linux查看文件从底部开始,linux中怎样从底部向上查看log文件
  6. hystrix 全局熔断_跟我学Spring Cloud(Finchley版)14Feign使用Hystrix
  7. 三子棋の胜负判断(洛谷P1838题题解,Java语言描述)
  8. 序列化模块和hashlib模块
  9. 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
  10. android 接百度SDK遇到的坑(百度地图BD09经纬度转高德地图GCJ02经纬度)
  11. 专家读《Windows 内核情景分析》这本书
  12. 监督学习、无监督学习、弱监督学习、半监督学习、强化学习概念
  13. 基于Lua+Kafka+Heka的Nginx Log实时监控系统
  14. A Brief History of Just-In-Time 简读
  15. uva1593代码对齐
  16. 把微信做成找券机器人,淘宝查券返利小助手实现方法分享
  17. 【搬运】常用逻辑符号整理
  18. 蜗牛爬墙墙高10米C语言,蜗牛爬墙——打破小朋友的数学思维模式
  19. Linux中查看各文件夹大小命令du -h --max-depth=1
  20. mac java调用浏览器_mac osx 下 浏览器 开启 java

热门文章

  1. 生物信息学 第一课 什么是生物信息学
  2. linux网络测速qerf,www.n5fe.com
  3. 索尼和ZMP牵手,旨在进军无人机技术和服务的蓝海
  4. Qt on Mac 开发之 读取苹果系统OSX上的plist资源文件
  5. 上海某软件公司电话面试分享
  6. spring框架学习 - 使用 Spring 的面向切面编程 补充1
  7. 2w 字长文爆肝 JVM 经典面试题!太顶了!
  8. 判断vector中是否存在某元素的多种方法
  9. Java使用Itext5与html模板生成pdf并支持下载
  10. PTA基础编程题目集6-5