如何快速建立數字輔助表

首先建立一個普通的數字表
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秒,是否是快不少 
相關文章
相關標籤/搜索