【MySQL索引事务】

时间:2025-03-29 07:22:30
-- 构建一个8000000条记录的数据 -- 构建的海量表数据需要有差异性,所以使用存储过程来创建,拷贝下面代码就可以了,暂时不用理解-- 产生名字 drop function if exists rand_name; delimiter $$ create function rand_name(n INT, l INT) returns varchar(255) begin declare return_str varchar(255) default ''; declare i int default 0; while i < n do if i=0 then set return_str = rand_string(l); else set return_str =concat(return_str,concat(' ', rand_string(l))); end if; set i = i + 1; end while; return return_str; end $$ delimiter ; -- 产生随机字符串 drop function if exists rand_string; delimiter $$ create function rand_string(n INT) returns varchar(255) begin declare lower_str varchar(100) default 'abcdefghijklmnopqrstuvwxyz'; declare upper_str varchar(100) default 'ABCDEFJHIJKLMNOPQRSTUVWXYZ'; declare return_str varchar(255) default ''; declare i int default 0; declare tmp int default 5+rand_num(n); while i < tmp do if i=0 then set return_str =concat(return_str,substring(upper_str,floor(1+rand()*26),1)); else set return_str =concat(return_str,substring(lower_str,floor(1+rand()*26),1)); end if; set i = i + 1; end while; return return_str; end $$ delimiter ; -- 产生随机数字 drop function if exists rand_num; delimiter $$ create function rand_num(n int) returns int(5) begin declare i int default 0; set i = floor(rand()*n); return i; end $$ delimiter ; -- 向用户表批量添加数据 drop procedure if exists insert_user; delimiter $$ create procedure insert_user(in start int(10),in max_num int(10)) begin declare i int default 0; set autocommit = 0; repeat set i = i + 1; insert into test_user values ((start+i) ,rand_name(2, 5),rand_num(120),CURRENT_TIMESTAMP); until i = max_num end repeat; commit; end $$ delimiter ; -- 执行存储过程,添加8000000条用户记录 call insert_user(1, 8000000);