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 相关文章推荐
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
php学习笔记(三)操作符与控制结构
Aug 06 PHP
mysql总结之explain
Feb 27 PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 PHP
php读取csv文件并输出的方法
Mar 14 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
thinkphp 框架数据库切换实现方法分析
May 18 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 源代码压缩小工具
2009/12/22 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
PHP检测一个数组有没有定义的方法步骤
2019/07/20 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
理解AngularJs指令
2015/12/10 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[03:59]第二届DOTA2亚洲邀请赛选手传记-VGJ.rOtk
2017/04/03 DOTA
Python字符串详细介绍
2015/05/09 Python
Python字符串格式化的方法(两种)
2017/09/19 Python
手把手教你python实现SVM算法
2017/12/27 Python
python调用摄像头拍摄数据集
2019/06/01 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
详解Django中异步任务之django-celery
2020/11/05 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
孕妇装中的著名品牌:Isabella Oliver(伊莎贝拉·奥利弗)
2016/10/31 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
印刷工程专业应届生求职信
2013/09/29 职场文书
汽车维修与检测专业应届生求职信
2013/11/12 职场文书
五一服装活动方案
2014/01/11 职场文书
发展部经理职责规定
2014/02/22 职场文书
公证委托书标准格式
2014/09/11 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
2014年终个人工作总结
2014/11/07 职场文书
小学体育教学随笔
2015/08/14 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript