文档章节

PHP大数组下,避免Mysql逐条执行,可以分批执行,提高代码效率

letwang
 letwang
发布于 2013/10/08 10:29
字数 213
阅读 935
收藏 4
function insertBatch($table, $keys, $values, $type = 'INSERT'){
	$tempArray = array();
	foreach($values as $value){
		$tempArray[] = implode('\', \'', $value);
	}
	return $type.' INTO `'.$table.'` (`'.implode('`, `', $keys).'`) VALUES (\''.implode('), (', $tempArray).'\')';
}

$splitNum = 5;
$data = array(array('a', '1'), array('b', '2'), array('c', '3'), array('d', '4'), array('e', '5'), array('f', '6'), array('g', '7'), array('h', '8'));

foreach(array_chunk($data, $splitNum) as $values){
	echo insertBatch('table', array('字段A', '字段B'), $values);
	echo '<br>';
}
//http://my.oschina.net/cart/
exit();

这将输出:

INSERT INTO `table` (`字段A`, `字段B`) VALUES ('a', '1), (b', '2), (c', '3), (d', '4), (e', '5')
INSERT INTO `table` (`字段A`, `字段B`) VALUES ('f', '6), (g', '7), (h', '8')
完毕!

上面,你可以适当调整$splitNum的大小,比如调整为50,只要你的内存、bulk_insert_buffer_sizemax_allowed_packet足够大,这点数值也可以调整为1000,这样,就是1000条记录分为1次提交到数据库,SQL插入速度立马杠杠上升的!

© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 150
博文 64
码字总数 77075
作品 1
南京
技术主管
加载中

评论(4)

海子的海
海子的海
顶 顶 1
海子的海
海子的海
顶 顶
letwang
letwang

引用来自“豪情”的评论

给力。

thanks
豪情
豪情
给力。
PHP7和HHVM的性能之争?

语言本身无分好坏,只是在各自使用的场景中解决不同的问题。互联网的时代车轮是很快的,随着移动互联网的到来,在短短四年多的时间里,移动端技术发展横扫全球。与此同时,各种语言群雄并起,...

旋转木马-千里马
2015/12/04
89
0
90%PHP新手都不知道的编程技巧

  PHP编程有很多技巧,但是大多数新手都不了解,今天给你们分享几个技巧,主要是提升编程效率的,希望对你们有帮助。 1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提...

小懒人23
2016/04/21
15
0
PHP性能优化,书写PHP需要注意的地方

0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么 做,它是一种可以把多个字符串当作参数的“函数”(...

xiaogg
2014/03/22
0
0
关于java的JIT知识

什么是JIT? JIT是just in time,即时编译技术。使用该技术,能够加速java程序的执行速度。下面,就对该技术做个简单的讲解。 首先,我们大家都知道,通常javac将程序源代码编译,转换成java字...

JavaGG
2010/05/18
485
2
mysql数据库优化(sql语句优化)

整理这篇文档也算是有感而发,起因就是染布生产进度大约5W多条数据,每次导出为excel表格的时候服务器上的cpu压力爆满,而项目的架构又从源头上限制了从硬件层面上优化,故本篇文章仅仅从sql...

机智的明
08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
6
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
2
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
14
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0
Redis性能问题排查解决手册

一、性能相关的数据指标 通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息。通过这些信息来分析文章后面提到的一些性能指标。 nfo命令输出的数据可...

IT--小哥
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部