MySQL插入百万条数据 - 个人总结1

有好多种方法。。。之前也总结了一些,但放到现在来看,效率都一般,于是重新思考总结这个问题;

觉得比较好的方法如下:(推荐方法二

方法一:使用存储过程procedure

每次insert的时候mysql都会自动提交,然后会有其他的一些耗时的操作,所以。。。。。取消掉自动提交不就好了嘛。。。直接 SET AUTOCOMMIT=0;

drop table if exists test;

create table test (c1 int(11) default NULL,c2 varchar(30) default NULL,c3 date default NULL);

drop PROCEDURE if exists test_insert;

delimiter //

CREATE PROCEDURE test_insert(n int)  
    begin  
        declare v int default 0;
        SET AUTOCOMMIT=0;       
        while v < n 
        do  
            insert into test   
            values (v,'testing partitions',adddate('1995-01-01',(rand(v)*36520) mod 3652));  
            set v = v + 1;  
        end while;
        SET AUTOCOMMIT=1;       
    end //

测试结果:

80万:9.67秒;

1000万:3分钟;

100万:大概10多秒左右;

方法二:直接用insert into … select … from …也就是不停地复制表里的数据,再插入

drop table if exists test2;

create table test2 (c1 int(11) default NULL,c2 varchar(30) default NULL);

insert into test2 values(1,'a'),(2,'b'),(3,'c');

insert into test2 select * from test2;

测试结果:

 

 

参考:

https://blog.csdn.net/qc1110/article/details/70141025?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

https://blog.csdn.net/u011212394/article/details/90375106

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值