MySQL批量插入測試資料

2021-12-29 19:54:40 字數 1245 閱讀 1540

mysql批量插入測試資料。在開發過程,經常需要在資料庫中生成大量的測試資料,這個時候,我們可以使用儲存過程幫我們完成這項工作。

首先,我們建立一張測試表,例如t_user

create table `t_user` (

`id` bigint(20) not null auto_increment,

`name` varchar(255) default null,

`age` tinyint(4) default null,

`create_time` datetime default null,

`update_time` datetime default null,

primary key (`id`)

) engine=innodb default charset=utf8;

下面,我麼通過下面的儲存過程來插入1000萬條資料。

delimiter $$

drop procedure if exists proc_batch_insert;

create procedure proc_batch_insert()

begin

declare pre_name bigint;

declare ageval int;

declare i int;

set pre_name=187635267;

set ageval=100;

set i=1;

while i < 1000000 do

insert into t_user(`name`,age,phone,create_time,update_time) values(concat(pre_name,'@qq.com'),(ageval+1)%30,now(),now());

set pre_name=pre_name+100;

set i=i+1;

end while;

end $$

delimiter ;

call proc_batch_insert();

經過測試,插入1百萬條資料,大約需要10分鐘,如果表的字段更多,可能花費的時間更長。

網上有人說預先在程式裡面生成資料,然後再通過客戶端匯入會更快。我尚未親自實驗,但是個人覺得不會有儲存過程快,因為不管怎麼樣,最終執行的還是插入語句。

插入後的資料預覽:

mysql 批量插入百萬測試資料

最近複習mysql索引相關效能,需要大批量資料進行測試,記個筆記 create table user test user id bigint 20 not null auto increment comment 使用者id login name varchar 30 not null comment...

MySQL插入大批量測試資料

執行sql drop procedure if exists proc initdata 如果存在此儲存過程則刪掉 delimiter create procedure proc initdata begin declare i int default 1 while i 10000000 do 這...

sql 批量插入測試資料

declare istart int declare iend int declare i int declare icount int set istart 1 set iend 100000 set i istart while i iend begin insert into websites...