ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySql快速插入百万级数据

2022-07-20 16:34:55  阅读:157  来源: 互联网

标签:audit no xxx 插入 MySql Var ID 百万


通过存储过程插入

如果我们想简单快速的插入大批量数据,存储过程是个不错的选择,下面这个存储过程,是我向表xxx_audit_order中插入100万条数据,耗时25秒左右,这里建议:
1.插入数据前先把表中的索引去掉,数据插入完成之后,再创建索引
2.关闭事务的自动提交
以上两点对提高速度很有帮助,因为索引的维护以及每次插入都提交事务是很耗时间

 

 

use test_db;
DROP PROCEDURE if EXISTS BatchInsert;
delimiter $$
CREATE PROCEDURE BatchInsert(IN initId INT, IN loop_counts INT)
BEGIN
DECLARE Var INT;
DECLARE ID INT;
SET Var = 0;
SET ID = initId;
set autocommit=0; -- 关闭自动提交事务,提高插入效率
WHILE Var < loop_counts DO
INSERT INTO `xxx_audit_order` (`product_no`,`xxx_channel_code`,`business_no`,`xxx_product_id`,`xxx_product_name`,`xxx_audit_no`,`xxx_audit_status`,`inspection_report_no`,`audit_report_no`,`re_audit_count`,`inspector_id`,`remark`,`delete_dt`,`create_by`,`create_dt`,`update_by`,`update_dt`,`xxx_link`,`service_standard_no`,`depth_inspection`,`execute_channel`,`seller_type`)
VALUES (CONCAT('20220704', 100000000000 + ID),106,'RS20190719143225916727',26958,'荣耀 Play',CONCAT('C0', 512201907191454553491 + ID),FLOOR(RAND()*10) % 4,'R1152109544189558784','R1152216911870734336',2,0,null,0,6532,UNIX_TIMESTAMP() + ID ,0,Now(),FLOOR(RAND()*10) % 3,'',0,1,null);
SET ID = ID + 1;
SET Var = Var + 1;
END WHILE;
COMMIT;
END$$;

delimiter ; -- 界定符复原为默认的分号
CALL BatchInsert(1, 1000000); -- 调用存储过程

 

搞定

 

标签:audit,no,xxx,插入,MySql,Var,ID,百万
来源: https://www.cnblogs.com/zhyphp/p/16498484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有