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面向对象全攻略 (二) 实例化对象 使用对象成员
Sep 30 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
Feb 11 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 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
ThinkPHP连接Oracle数据库
2016/04/22 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP入门教程之图像处理技巧分析
2016/09/11 PHP
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
JavaScript获取表单enctype属性的方法
2015/04/02 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
jQuery实现导航回弹效果
2017/02/27 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
2018/10/11 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
Ant Design的可编辑Tree的实现操作
2020/10/31 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
python 测试实现方法
2008/12/24 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
python实现C4.5决策树算法
2018/08/29 Python
对python中Json与object转化的方法详解
2018/12/31 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
django列表筛选功能的实现代码
2020/03/27 Python
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
经济学博士求职自荐信范文
2013/11/23 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
法制宣传教育方案
2014/05/09 职场文书
幼师求职自荐信
2014/05/31 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
公路施工安全责任书
2015/05/08 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
如何在Python项目中引入日志
2021/05/31 Python
MySQL学习必备条件查询数据
2022/03/25 MySQL