1000万件のテストデータを挿入するためのストアド・プロシージャ
2414 ワード
まず、t_などのテストテーブルを作成します.user
?
1 2 3 4 5 6 7 8
次に、私は次のストレージプロセスを通じて1000万件のデータを挿入します.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
テストの結果、1百万件のデータを挿入するのに約10分かかり、テーブルのフィールドが多ければ、より長い時間がかかる可能性があります.ネット上では、事前にプログラムでデータを生成してからクライアントを通じてインポートするほうが速いと言われています.私はまだ自分で実験していませんが、個人的にはストレージプロセスが速くないと思います.いずれにしても、最終的に実行されるのは挿入文です.
?
1 2 3 4 5 6 7 8
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万件のデータを挿入します.
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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分かかり、テーブルのフィールドが多ければ、より長い時間がかかる可能性があります.ネット上では、事前にプログラムでデータを生成してからクライアントを通じてインポートするほうが速いと言われています.私はまだ自分で実験していませんが、個人的にはストレージプロセスが速くないと思います.いずれにしても、最終的に実行されるのは挿入文です.