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 相关文章推荐
测试您的 PHP 水平的题目
May 30 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
win2003服务器使用WPS的COM组件的一些问题解决方法
Jan 11 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP中开启gzip压缩的2种方法
Jan 31 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
Jul 31 PHP
PHP chr()函数讲解
Feb 11 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实现简单的MVC框架实例
2015/09/23 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
基于jquery的表头固定的若干方法
2011/01/27 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
JavaScript设计模式之代理模式详解
2017/06/09 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
原生js+ajax分页组件
2020/01/30 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
Python中字符串List按照长度排序
2019/07/01 Python
浅谈keras.callbacks设置模型保存策略
2020/06/18 Python
python使用建议与技巧分享(二)
2020/08/17 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
HTML5中的网络存储实现方式
2020/04/28 HTML / CSS
控制工程专业个人求职信
2013/09/25 职场文书
《猫》教学反思
2014/02/26 职场文书
大学优秀班集体申报材料
2014/05/23 职场文书
法院反腐倡廉心得体会
2014/09/09 职场文书
班子查摆四风个人对照检查材料思想汇报
2014/10/04 职场文书
售房协议书范本2014
2014/10/23 职场文书
幼儿学前班评语
2014/12/29 职场文书
失职检讨书大全
2015/01/26 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL