mysql 插入百万条数据

news/2024/7/4 9:16:17

利用mysql内存表插入速度快的特点,先存储过程在内存表中生成数据,然后再从内存表插入普通表中

一.创建内存表

CREATE TABLE `vote_record_memory` ( 
  `id` INT (11) NOT NULL AUTO_INCREMENT, 
  `name` VARCHAR (50) NOT NULL,
  `pwd` VARCHAR(32) NOT NULL,
  `create_time` datetime NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8

二.创建普通表

CREATE TABLE `vote_record_memory` ( 
  `id` INT (11) NOT NULL AUTO_INCREMENT, 
  `name` VARCHAR (50) NOT NULL,
  `pwd` VARCHAR(32) NOT NULL,
  `create_time` datetime NOT NULL, 
  PRIMARY KEY (`id`)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8

三.创建一个函数,用于生成随机字符串

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

四.创建存储过程

CREATE PROCEDURE `add_data`(IN n int)
BEGIN 
  DECLARE i INT DEFAULT 1;
  WHILE (i <= n ) DO
    INSERT into test (name,pwd,create_time ) VALUES (rand_string(50),MD5(123456) ,now() );
    set i=i+1;
  END WHILE;
END

五.调用存储过程

CALL add_data(1000000);

由于mysql 默认内存允许容量小,会出现如下报错

   

windows 操作系统 找到 my.ini 修改  ,不同的集成环境,配置会有差别,修改max_heap_table_size = 1024M,或者添加进去即可,重启mysql,根据电脑性能不能所花时间不一样,大概时间在小时级别

六.插入到普通表中

INSERT into test2 SELECT * from test;

 

转载于:https://www.cnblogs.com/songxuan/p/9469098.html


http://www.niftyadmin.cn/n/4557423.html

相关文章

C++网络编程是什么....

用它来构造你想要构造的事件 用语言构成了一个世界或者描述了一个事件C同样是一种语言 就像你写作文

8.jsp前端页面的理解:分页、筛选

jsp页面刷新只是改了页码和筛选条件而已: 1.第一次访问还是点击下一页时&#xff0c;肯定是request.getParameter获取所有需要的参数&#xff0c;比如当前页码&#xff0c;重要的筛选条件。 //如果是第一次访问&#xff0c;那么很多参数默认为空&#xff0c;那就作一点处理就…

Nginx 安装--图片服务器搭建

1. nginx 需要依赖以下模块&#xff1a; gzip模块需要 zlib 库 rewrite模块需要 pcre 库 ssl 功能需要openssl库 1.1.安装pcre 1. 获取pcre编译安装包&#xff0c;在http://www.pcre.org/上可以获取当前最新的版本 2. 解压缩pcre-xx.tar.gz包。 3. 进…

C++语言的学习方法

||| 多看书多看源码多做练习 ||| 不需要 首先你要对他有兴趣你才可能会把他学好 ||| 不需要 怎么学都学不会 不感兴趣的人 学起来很快 很好的学习地方http://www.jtr.cn/不好你杀了我 ||| 对他有兴趣的人 建议先学下c语言啊 对你来说你比较好的. ||| 没有前提 有C语言的基础 然…

jieba(杰巴)分词的三种模式

jieba&#xff08;结巴&#xff09;是一个强大的分词库&#xff0c;完美支持中文分词&#xff0c;做为最好的Python中文分词组件。 安装&#xff1a;pip install jieba 特点 支持三种分词模式&#xff1a; 1.精确模式&#xff0c;试图将句子最精确地切开&#xff0c;适合文本分…

在C#里 级联连接 怎么写

然后将它的isposeback设置为true就可以了 是下拉列表改变事件 有个事件

poj2456---Aggressive cows

tips: 1.二分时区间是否要加等号&#xff0c;看等号成立时是否需要进入循环 2.L和R的赋值要看条件&#xff0c;第一个满足条件和最后一个满足条件 3.所有的都可以归结为找位置&#xff1f;&#xff1f; //感觉是二分答案 //想要寻找最后一个满足条件C的元素的位置&#xff0c; …

Tomcat在阿里云上启动慢的解决办法

omcat在本地服务器跑&#xff0c;一切都正常&#xff0c;但部署到阿里云上&#xff0c;发现启动巨慢。 经过在网上搜索&#xff0c;找到了原因&#xff1a; Tomcat 7/8都使用org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom类产生安全随机类SecureRandom的…