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 相关文章推荐
set_include_path在win和linux下的区别
Jan 10 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
ThinkPHP 3.2 数据分页代码分享
Oct 14 PHP
PHP实现文件下载断点续传详解
Oct 15 PHP
10个简化PHP开发的工具
Dec 25 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
php检测图片主要颜色的方法
Jul 01 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
May 09 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 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
神族 PROTOSS 概述
2020/03/14 星际争霸
请php正则走开
2008/03/15 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
微信公众平台开发(五) 天气预报功能开发
2016/12/03 PHP
php屏蔽错误及提示的方法
2020/05/10 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
从零学习node.js之详解异步控制工具async(八)
2017/02/27 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
JavaScript 严格模式(use strict)用法实例分析
2020/03/04 Javascript
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
django 读取图片到页面实例
2020/03/27 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
加拿大的标志性百货公司:Hudson’s Bay(哈得逊湾)
2019/09/03 全球购物
初中校园之声广播稿
2014/01/15 职场文书
军训自我鉴定200字
2014/02/13 职场文书
保护环境的建议书
2014/03/12 职场文书
分公司经理任命书
2014/06/05 职场文书
优秀共产党员演讲稿
2014/09/04 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
车间统计员岗位职责
2015/04/14 职场文书
答辩状格式范本
2015/05/22 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Python利用capstone实现反汇编
2022/04/06 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL