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 相关文章推荐
生成sessionid和随机密码的例子
Oct 09 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
用php守护另一个php进程的例子
Feb 13 PHP
php结合curl实现多线程抓取
Jul 09 PHP
ThinkPHP安装和设置
Jul 27 PHP
PHP异常处理Exception类
Dec 11 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
PHP封装cURL工具类与应用示例
Jul 01 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
Symfony2学习笔记之控制器用法详解
2016/03/17 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
javascript multibox 全选
2009/03/22 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
支付宝小程序tabbar底部导航
2018/11/06 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
用Python编写web API的教程
2015/04/30 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Python应用库大全总结
2018/05/30 Python
python ChainMap的使用和说明详解
2019/06/11 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
房地产公司见习自我鉴定
2014/04/28 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
现实表现证明材料
2015/06/19 职场文书
活动新闻稿范文
2015/07/17 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书
2019暑假阅读倡议书
2019/06/24 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫