如何快速建立数字辅助表

首先建立一个普通的数字表
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秒,是否是快不少 
相关文章
相关标签/搜索