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.MVC的模板标签系统(一)
Sep 05 PHP
模仿OSO的论坛(四)
Oct 09 PHP
使用TinyButStrong模板引擎来做WEB开发
Mar 16 PHP
解析PHP中如何将数组变量写入文件
Jun 06 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
php验证码的制作思路和实现方法
Nov 12 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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连接数据库代码应用分析
2011/05/29 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
Yii框架操作cookie与session的方法实例详解
2019/09/04 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
jquery 选取方法都有哪些
2014/05/18 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jquery简单实现网页层的展开与收缩效果
2015/08/07 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
dts文件中删除一个node或属性的操作方法
2018/08/05 Javascript
vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】
2018/08/29 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
python字符串格式化方式解析
2019/10/19 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
Python Django搭建网站流程图解
2020/06/13 Python
python上selenium的弹框操作实现
2020/07/13 Python
python pillow库的基础使用教程
2021/01/13 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
linux面试题参考答案(9)
2016/01/29 面试题
外贸专业求职信
2014/03/09 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
幼儿园毕业典礼家长致辞
2015/07/29 职场文书
酒店员工管理制度
2015/08/05 职场文书