示例:
向user
表中插入一千萬條資料,其中user_id
11位手機號隨機,可以重複;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 定義語句結束符為...