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

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万条半小时左右(不知道有没有什么更好的办法)

猜你喜欢

转载自www.cnblogs.com/zzcsza/p/11979910.html