使用存储过程造测试数据
CREATE TABLE single_table (
id INT NOT NULL AUTO_INCREMENT,
key1 VARCHAR(100),
key2 INT,
key3 VARCHAR(100),
key_part1 VARCHAR(100),
key_part2 VARCHAR(100),
key_part3 VARCHAR(100),
common_field VARCHAR(100),
PRIMARY KEY (id),
KEY idx_key1 (key1),
UNIQUE KEY idx_key2 (key2),
KEY idx_key3 (key3),
KEY idx_key_part(key_part1, key_part2, key_part3)
) Engine=InnoDB CHARSET=utf8;
随机生成长度为len的字符串
delimiter //
create function rand_string(len integer)
returns text no sql
begin
declare counter int default 1;
declare str text default '';
if len < 1 then
return null;
end if;
while counter <= len do
set str = concat(str, char(floor(rand() * 94) + 33));
set counter = counter + 1;
end while;
return str;
end
//
delimiter ;
DROP PROCEDURE IF EXISTS create_data;
-- 定义存储过程
DELIMITER //
CREATE PROCEDURE create_data(IN loop_times INT)
BEGIN
DECLARE var INT;
DECLARE str TEXT default '';
SET var = 1;
WHILE var <= loop_times DO
SET str = left(replace(uuid(),'-',''), 10);
INSERT INTO single_table (`key1`,`key2`,`key3`, `key_part1`,`key_part2`,`key_part3`,`common_field`)
VALUES (str, var, str, str, str, str, str);
SET var = var + 1;
END WHILE;
END //
DELIMITER ;
call create_data(10000);
create table t1 like single_table;
insert into t1 (select * from single_table where id <= 10000);
参考博客
[1]https://blog.csdn.net/horses/article/details/108083399