首先创建一个普通的数字表
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条数据需要用多长时间
![](../p_w_upload/201304/113139901.png)
然后我们将这个表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);
下图是试验截图
![](../p_w_upload/201304/113209114.png)
这次才用了0.08秒,是不是快很多
![](/editor/icons/etc_14.gif)
转载于:https://blog.51cto.com/wuyebamboo/1181201