我想做一个大点的数据表来做实验,
谢了个存储过程向数据表中插入数据,
存储过程是根据输入的参数循环向数据表中插入数据,
但问题是数据比较少的时候没有问题,
一旦数据比较大(比如:1500000),
就会出现一直跑下去,
不会结束,
能从中午一路跑到晚上还不结束,
基本算是十个小时了。
不应该那么慢吧,
400000才一个小时多点就完了。
求大神们解释。
存储过程是
create procedure insert_data(in numAll int(10))
 begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i+1;
insert into testTable values(null,getRandNum(5),getRandString(3,40));
until i = numAll
end repeat;
commit;
end $$

解决方案 »

  1.   

    牵扯到的两个自定义函数create function getRandNum(lengthNum INT)
    returns int(5)
    begin
    declare return_num int(5) default 0;
    set return_num = floor(1+rand()*99999);
    return return_num;
    end $$ create function getRandString(minLength INT,maxLength INT)
      returns varchar(20)#函数返回的是长度小于20的字符串
      begin
    declare char_str varchar(52) default
    'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    declare return_str varchar(20) default '';
    declare i int default 0;
    declare now int default 0;
    set now = floor(1+rand()*(maxLength-minLength))+minLength;
    while i < now do
    set return_str = concat(return_str,substring(char_str,floor(1+rand()*52),1));
    set i = i + 1;
    end while;
    return return_str;
      end $$