mysql利用儲存過程批量插入一千萬資料(半小時)

2021-09-24 21:31:11 字數 1538 閱讀 1387

示例:

user表中插入一千萬條資料,其中user_id11位手機號隨機,可以重複;age為18-27之間;count隨機金額,八位小數;status二百萬資料為1,八百萬資料為0。

-- 如果該名字儲存過程已存在,則刪除

drop

procedure

ifexists proc_initdata1;

-- 建立

create

procedure proc_initdata1 (

)begin

declare

i int

default0;

declare

uid varchar

(255

)default0;

declare

count decimal(20

,8)default0;

declare

op int

default0;

declare

age int

default0;

start

transaction

;while

i <=

10000000

doselect

concat(

'1', ceiling( rand()*

9000000000

+1000000000))

into uid;

select

floor(18+

( rand()*

9))into age;

select

round((

10+( rand()*

1001))

,8)into count;

if i %5=

0then

insert

into

user

( user_id, age, count,

status

)values

( uid, age, count,1)

;else

insert

into ryw_intelligent_dog ( user_id, age, count,

status

)values

( uid, age, count,0)

;endif;

set i = i +1;

endwhile

;commit

;end

-- 呼叫

call proc_initdata1 ();

-- 刪除表資料

truncate

table

user

;

親測需要半小時左右,前提刪除索引,引擎innodb。

總結:在開始編寫時並未使用事物手動提交,導致資料量插入非常慢。在批量插入大量資料時,要刪除索引,並開啟事物手動提交。

mysql利用儲存過程批量插入資料

最近需要測試一下mysql單錶資料達到1000w條以上時增刪改查的效能。由於沒有現成的資料,因此自己構造,本文只是例項,以及簡單的介紹。首先當然是建表 create table fortest id int 30 unsigned not null auto increment primary ke...

MySql批量插入資料 儲存過程

批量插入儲存過程 create procedure auto insert in indexs int,in loops int begin declare v sql longtext set v sql insert into t info name,time values while inde...

MySQL 利用儲存過程while迴圈插入資料

個人學習的時候通常需要創造一些測試資料,一般是利用儲存過程。例如向test表中插入大量資料 create table test id int 11 not null auto increment,name varchar 10 default null,primary key id 定義語句結束符為...