将表中的数据复制2的倍数复制
可以用来sql大数据的测试,调优使用
-- 关闭mysql对存储过程的限制
set GLOBAL log_bin_trust_function_creators = 0;
-- 执行insert into select...重复repeat_times次
DROP PROCEDURE
IF
EXISTS prepare_test_data;
delimiter $$
CREATE PROCEDURE prepare_test_data (
IN repeat_times INT ( 10 )) BEGIN
DECLARE
i INT DEFAULT 0;
loopname :
LOOP
SET i = i + 1;
-- insert+select ,每执行一次,增加一倍
INSERT INTO `category` ( `name`, `type`, `father_id`, `logo`, `slogan`, `cat_image`, `bg_color` ) SELECT
`name`,
`type`,
`father_id`,
`logo`,
`slogan`,
`cat_image`,
`bg_color`
FROM
category;
INSERT INTO `items` ( `id`, `item_name`, `cat_id`, `root_cat_id`, `sell_counts`, `on_off_status`, `content`, `created_time`, `updated_time` ) SELECT
UUID(),
`item_name`,
`cat_id`,
`root_cat_id`,
`sell_counts`,
`on_off_status`,
`content`,
`created_time`,
`updated_time`
FROM
items;
-- 多张表一次写在里面,如上...
IF
i = repeat_times THEN
LEAVE loopname;
END IF;
END LOOP loopname;
END $$;
-- 调用方法,将原先表中的所有数据变成2^10倍
call prepare_test_data(10);