有时候为了测试mysql性能,需要生产一张上万,百万,千万的表,有如下方法可实现
SETGLOBALlog_bin_trust_function_creators=1;
create function rn() returns smallint begin declare res smallint default 0; set res=floor(1+rand()*3000) ; #这里1和3000的位置可以更改为你需要的范围。 return res; end
createfunctionrs(nint)
returnsvarchar(1024)
begin
declarecharschar(52)default'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
declareresvarchar(1024)default'';
declareiintdefault0;
repeat
seti=i+1;
setres=concat(res,substring(chars,floor(1+rand()*52),1));
untili=nendrepeat;
returnres;
end
createprocedureinst(nint)
begin
declareiintdefault0;
setautocommit=0;
repeat
seti=i+1;
insertintojc_user_kw(user_id,kw_name,kw_price)values(10,rs(10),rn()); -----jc_user_kw 为表名,其他为列名
untili=nendrepeat;
commit;
setautocommit=1;
end
callinst(10000)