首先创建一个普通的数字表
create table Nums(w int unsigned not null primary key) engine=innodb;  ##创建innoDB引擎的表Nums

delimiter //      ##指明//为分隔符
create procedure pCreateNums (n int unsigned)   ##创建一个名字为pCreateNums的存储过程
begin
declare s int unsigned default 1;
truncate table Nums;
while s <= n do
begin
insert into Nums select s;
set s = s+1;
end;
end while;
end;
//
delimiter ;    ##恢复;为分隔符

call pCreatenums (200000);    #向表Nums插入数据

下图是我以做的试验,查看插入100000条数据需要用多长时间


然后我们将这个表Nums和存储过程pCreateNums删除,再建立一个相同名字的表和存储过程。

create table Nums(w int unsigned not null primary key) engine=innodb;

delimiter //
create procedure pFastCreateNums (n int unsigned)
begin
declare s int unsigned default 1;
truncate table Nums;
while s*2 <= n do
begin
insert into Nums select w+s from Nums;
set s = s*2;
end;
end while;
end;
//
delimiter ;

call pFastCreateNums (200000);

下图是试验截图


这次才用了0.08秒,是不是快很多