ダミーデータを作成する。 insert_generate_series
以前のinsert_generate_seriesですと数万行のダミーデータ作成はできないので、以下のように改良しました。
DROP PROCEDURE insert_generate_series; delimiter [[ CREATE PROCEDURE insert_generate_series( IN target VARCHAR(255) , -- insert対象のテーブル、カラム名を指定 IN value VARCHAR(6000) , -- valuesを記述 @numがgenerate_seriesで生成された値になる IN start_num INT , -- 開始値 IN end_num INT , -- 終了値 IN step INT -- 増分 ) begin set @num:= start_num; set @sql:= concat('INSERT INTO ',target,' VALUES '); set @page_size:=100; set @page_end:=0; while @num <= end_num do set session sql_notes=0; drop temporary table if exists t_values; set session sql_notes=1; create temporary table t_values (val varchar(6000)); set @buf_size:=length(@sql); set @page_end:=@page_end+@page_size; while @num <= end_num AND @num <= @page_end do set @buf:=concat('(',replace(value,'@num',@num),')'); insert into t_values VALUES ( @buf ); set @buf_size:=@buf_size+length(@buf)+1; set @num:=@num + step; end while; set session group_concat_max_len=@buf_size; -- set session max_allowed_packet=@buf_size; set @sql:= concat(@sql,(select group_concat(val) from t_values)); prepare stmt from @sql; execute stmt; end while; end; ]] delimiter ; call insert_generate_series('user(user_name)','concat(md5(@num),@num)',1,100000,1);