mysql实现快速插入100万条数据

1 修改mysql配置

先关闭mysql服务,修改mysql中my.ini
添加最后一行,因为默认内存可能不够
mysql实现快速插入100万条数据_第1张图片

2 实施过程

1、

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;

2、

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;

3、

delimiter |

4、

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 |

5、

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 |

6、

delimiter ;

7、

CALL add_vote_memory(1000000);

在这里插入图片描述
8、

INSERT into vote_record SELECT * from  vote_record_memory; 

在这里插入图片描述

你可能感兴趣的:(mysql)