1000万件のテストデータを挿入するためのストアド・プロシージャ

2414 ワード

まず、t_などのテストテーブルを作成します.user
?
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分かかり、テーブルのフィールドが多ければ、より長い時間がかかる可能性があります.ネット上では、事前にプログラムでデータを生成してからクライアントを通じてインポートするほうが速いと言われています.私はまだ自分で実験していませんが、個人的にはストレージプロセスが速くないと思います.いずれにしても、最終的に実行されるのは挿入文です.