文档章节

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

letwang
 letwang
发布于 2013/10/08 10:29
字数 213
阅读 958
收藏 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
粉丝 171
博文 54
码字总数 81461
作品 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+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
mysql数据库优化(sql语句优化)

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

机智的明
08/06
0
0
PHP性能优化,书写PHP需要注意的地方

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

xiaogg
2014/03/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的FsStateBackend

序 本文主要研究一下flink的FsStateBackend StateBackend flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBackend.java @PublicEvolvingpublic interface Sta......

go4it
31分钟前
1
0
webpack配置proxyTable时pathRewrite无效的解决方法

webpack配置接口地址代理 在项目开发中,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们在本地启动服务器后,比如本地开发服务下是 http://localhost:8080 ...

前端小攻略
32分钟前
1
0
安装jenkins

1.下载 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.155/jenkins.war 2.后续操作和 dubbo 安装类似: (1)复制一份空白的tomcat,重命名为:jenkins-tomcat (2)war包放入t...

狼王黄师傅
40分钟前
2
0
zookeeper配置与使用

一.登录官网下载 不要带后缀的,那是公侧版本,下稳定版,比如3.4.9 二.安装与使用 解压后bin里是启动程序 配置文件:在conf下 复制zoo_sample.cfg改名为为zoo.cfg,打开zoo修改文件 临时数据保存...

小兵胖胖
今天
3
0
spring源码阅读笔记(一)

ClassPathXmlApplicationContext 与 FileSystemXmlApplicationContext 用了这么久的框架,是时候搞一下源码了,一般最初接触spring 从以下步骤开始 创建一个bean类 并创建 ooxx.xml之类的spr...

NotFound403
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部