博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
提高批量插入数据的方法
阅读量:6972 次
发布时间:2019-06-27

本文共 1278 字,大约阅读时间需要 4 分钟。

1.insert into demo(`a`,`b`,`c`)values('111','222','333'),('444','555','6666'),('777','888','9999'),....;

的效率优于insert into demo(`a`,`b`,`c`)values('111','222','333');insert into demo(`a`,`b`,`c`)values('444','555','666');...

 

补充:2016-02-26

a.对于插入,优先使用:insert into table_name(column-1,column-2,column-3...)values('a','b','c',..),('aa','bb','cc',..),('aaa','bbb','ccc',..);

b.开启事物,然后执行插入操作,会大大提高插入数据的效率。如:

START TRANSACTION;   ### begin; insert into .... commit; 当然,mysql中存储引擎innodb支持事物,myisam并不支持,,如果要使用事物。 engine=innodb; alter table table_name engine=innodb; ..... 都可以。 C.如果a与C结合起来使用,效果会更好。 拓展:

注意事项:

aa. SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M。

在my.ini中

[mysqldump]

quick
max_allowed_packet=16M

bb. 事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会日志会使用磁盘数据,这时,效率会有所下降。所以比较好的做法是,在事务大小达到配置项数据级前进行事务提交。

 [mysqld]

innodb_log_buffer_size=2M

..................

2.如果你从不同客户插入很多行,能通过使用INSERT DELAYED语句得到更高的速度.语法:

LOW_PRIORITY刚好相反,在所有其他用户对表的读写完后才进行插入。语法:

对应的还有:

 

3.如果进行批量插入,可以增加bulk_insert_buffer_size变量值的方法来提高速度,但是,这只能对myisam表使用。

对数据库的配置:bulk_insert_buffer_size = n

[mysqld]

#新添加

bulk_insert_buffer_size = 10000

 

4.当从一个文本文件装载一个表时,使用LOAD DATA INFILE。这通常比使用很多INSERT语句快20倍。对于这种方法,我有相关随笔的介绍。

 

5. 根据应用情况使用replace语句代替insert。

 6.根据应用情况使用ignore关键字忽略重复记录。

 

转载地址:http://wbasl.baihongyu.com/

你可能感兴趣的文章
phpQuery—基于jQuery的PHP实现
查看>>
driver_1_1
查看>>
hdu 2227 Find the nondecreasing subsequences
查看>>
LeetCode OJ - Single Number
查看>>
信息安全系统设计基础第八周学习总结
查看>>
ios 为什么拖拽的控件为weak 手写的strong
查看>>
Course
查看>>
java语言学习指南
查看>>
[模板] 计算几何2: 自适应Simpson/凸包/半平面交/旋转卡壳/闵可夫斯基和
查看>>
asp.net小记之——线程
查看>>
PHP 学习笔记---基本语法
查看>>
xml常用四种解析方式优缺点的分析×××××
查看>>
1到100的加法
查看>>
良序原理
查看>>
Android 数据库创建字段时的数据类型
查看>>
Spark入门实战系列-10章-18篇-含数据(转)
查看>>
Genymotion中运行cocos2d-x的程序
查看>>
CSS子元素设置margin-top作用于父容器?
查看>>
资源管理器操作
查看>>
黄灯:一个农村儿媳眼中的乡村图景
查看>>