如何在mysql数据库生成百万条数据来测试页面加载速度

时间:2022-06-11 17:24:40

1.首先复制一条sql

在复制前,需要确定该记录是否有主键

若无,则代码非常简单,

insert into gl_energy_meter_data SELECT * from gl_energy_meter_data where dosage="12432";

复制的表名↑                                   粘贴的表名↑                        ↑ 某个字段的值最好唯一

若有主键,一般是ID,则需要随机生成新的ID

INSERT INTO tb_swing_card (
swing_card_number,
swing_card_device_id,
swing_card_serial,
swing_card_address,
swing_card_type,
swing_card_time,
swing_card_emp_id, 这一块为复制的表的所有字段
swing_card_emp_name,
swing_card_organ_name,
swing_card_id,
swing_card_device_name,
swing_card_device_type,
swing_card_device_direction,
swing_card_organ_id,
swing_card_organ_parent_ids,
tower_id,
tower_name,
floor_id,
floor_name,
region_id,
region_name
)
SELECT
swing_card_number,
swing_card_device_id,
swing_card_serial,
swing_card_address,
swing_card_type,
swing_card_time,
swing_card_emp_id,
swing_card_emp_name,
swing_card_organ_name,
REPLACE (uuid( ), '-', '' ), 这一块为粘贴地点的所有字段,将该id改为自动生成
swing_card_device_name,
swing_card_device_type,
swing_card_device_direction,
swing_card_organ_id,
swing_card_organ_parent_ids,
tower_id,
tower_name,
floor_id,
floor_name,
region_id,
region_name
FROM
tb_swing_card
WHERE
swing_card_id = "5d9fe31f7359a9141d7ebb5"; 所复制数据的某个字段的值(id)

此时成功生成一条数据,接来下的思路就是循环复制

2.循环一百万次执行

drop procedure if exists test_loop;
delimiter //
create procedure test_loop() # 创建存储过程
begin
declare i int default 1;
while i<1000000 循环次数
do
# 此处复制1中代码
set i=i+1;
end while;
commit;
end //
delimiter ; SELECT * from gl_energy_meter_data; # 复制的表名
CALL test_loop();

3.时间:10万条数据耗时3分钟左右。100万条半小时左右(不知道有没有什么更好的办法)