700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > mysql利用存储过程批量插入一千万数据(半小时)

mysql利用存储过程批量插入一千万数据(半小时)

时间:2023-01-31 16:36:35

相关推荐

mysql利用存储过程批量插入一千万数据(半小时)

示例:

user表中插入一千万条数据,其中user_id11位手机号随机,可以重复;age为18-27之间;count随机金额,八位小数;status二百万数据为1,八百万数据为0。

-- 如果该名字存储过程已存在,则删除DROP PROCEDURE IF EXISTS proc_initData1;-- 创建CREATE PROCEDURE proc_initData1 ( ) BEGINDECLAREi INT DEFAULT 0;DECLAREuid VARCHAR ( 255 ) DEFAULT 0;DECLAREcount DECIMAL(20,8) DEFAULT 0;DECLAREop INT DEFAULT 0;DECLAREage INT DEFAULT 0;START TRANSACTION;WHILEi <= 10000000 DOSELECTCONCAT( '1', CEILING( RAND( ) * 9000000000+1000000000 ) ) INTO uid;SELECTFLOOR( 18 + ( RAND( ) * 9 ) ) INTO age;SELECTROUND( ( 10 + ( RAND( ) * 1001 ) ), 8 ) INTO count;IFi % 5 = 0 THENINSERT 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 );END IF;SET i = i + 1;END WHILE;COMMIT;END-- 调用CALL proc_initData1 ( );-- 删除表数据truncate table user;

亲测需要半小时左右,前提删除索引,引擎innodb。

总结:在开始编写时并未使用事物手动提交,导致数据量插入非常慢。在批量插入大量数据时,要删除索引,并开启事物手动提交。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。