前面介绍了MySQL批量插入可以通过存储过程的方式来实现,这里介绍批量插入100W记录,并做一个优化。
建表语句:create_table.sql
drop table if exists xx_user;
create table xx_user(
id int primary key auto_increment,
name varchar(20),
age int);
直接插入:proc.sql
delimiter //
drop procedure if exists add_user;
create procedure add_user()
begin
declare i int default 0;
set i=0;
while i<=1000000 do
set i=i+1;
insert into xx_user(name,age) values (concat('user-',i),20);
end while;
end;
//
delimiter ;
默认情况下,直接调用生成的存储过程,批量插入100w条记录,耗时如下:
这种循环单条记录插入的方式建议不要直接操作,非常耗时。
多values插入:batch.sql
drop procedure if exists batch_insert;
delimiter //
create procedure batch_insert()
begin
declare