文档章节

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

letwang
 letwang
发布于 2013/10/08 10:29
字数 213
阅读 926
收藏 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
粉丝 140
博文 66
码字总数 74230
作品 0
南京
技术主管
加载中

评论(4)

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

引用来自“豪情”的评论

给力。

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

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

旋转木马-千里马
2015/12/04
89
0
PHP性能优化,书写PHP需要注意的地方

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

xiaogg
2014/03/22
0
0
PHP+MySQL缓冲查询和无缓冲查询

http://php.net/manual/zh/mysqlinfo.concepts.buffering.php http://php.net/manual/zh/mysqli.query.php PHP MySQL查询(mysqli,pdo_mysql)默认使用缓冲模式. 也就是说查询结果将一次性从M......

eechen
2015/12/30
1K
1
提升运行效率 php不得不知道的优化建议

PHP是流行的脚本开发语言,相对于Java、C等编译语言,一次编译,到处运行,效率上是比脚本类语言要快的;而PHP是通过Zend语言引擎进行解析的,可以将其作为Web服务器的内嵌模块或者通过Socke...

wwww6662003
2014/05/05
0
0
90%PHP新手都不知道的编程技巧

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

小懒人23
2016/04/21
15
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
34分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
38分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
42分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
51分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部