mysql sql语句复制表数据为2^10倍

这篇博客介绍了如何通过SQL语句来复制表中的数据,并将其数量扩大到原先的2^n倍,用于大数据测试和性能调优。通过创建存储过程,实现了多次插入并选择性地重复数据,涉及了数据表`category`和`items`的复制操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将表中的数据复制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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值