PHP大批量插入数据库的3种方法和速度对比


Posted in PHP onJuly 08, 2014

第一种方法:使用insert into 插入,代码如下:

$params = array(‘value'=>'50′);
set_time_limit(0);
echo date(“H:i:s”);
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
};
echo date(“H:i:s”);

最后显示为:23:25:05 01:32:05 也就是花了2个小时多!

第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒  ,代码如下:

echo date(“H:i:s”);
$connect_mysql->query(‘BEGIN');
$params = array(‘value'=>'50′);
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
if($i%100000==0){
$connect_mysql->query(‘COMMIT');
$connect_mysql->query(‘BEGIN');
}
}
$connect_mysql->query(‘COMMIT');
echo date(“H:i:s”);

第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values  (),(),(),()然后再一次性插入,如果字符串太长,

则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet =  2*1024*1024*10;消耗时间为:11:24:06 11:25:06;

插入200W条测试数据仅仅用了1分钟!代码如下:

$sql= “insert into twenty_million (value) values”;
for($i=0;$i<2000000;$i++){
$sql.=”('50′),”;
};
$sql = substr($sql,0,strlen($sql)-1);
$connect_mysql->query($sql);

最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

PHP 相关文章推荐
杏林同学录(四)
Oct 09 PHP
php操作sqlserver关于时间日期读取的小小见解
Nov 29 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
基于php socket(fsockopen)的应用实例分析
Jun 02 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
ThinkPHP标签制作教程
Jul 10 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
php发送get、post请求的6种方法简明总结
Jul 08 #PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
Jul 08 #PHP
微信公众平台天气预报功能开发
Jul 06 #PHP
最常用的8款PHP调试工具
Jul 06 #PHP
一个不易被发现的PHP后门代码解析
Jul 05 #PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 #PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 #PHP
You might like
实例介绍PHP的Reflection反射机制
2014/08/05 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
javascript中强制执行toString()具体实现
2013/04/27 Javascript
jQuery prev ~ siblings选择器使用介绍
2013/08/09 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
js单例模式详解实例
2013/11/21 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
特殊日期提示功能的实现方法
2016/06/16 Javascript
js中删除数组中的某一元素实例(无下标时)
2017/02/28 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
关于人生的感言
2014/01/17 职场文书
红旗团支部事迹材料
2014/01/27 职场文书
乌鸦喝水教学反思
2014/02/07 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
SpringBoot详解执行过程
2022/07/15 Java/Android