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 相关文章推荐
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
PHP时间戳使用实例代码
Jun 07 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
PHP游戏编程25个脚本代码
Feb 08 PHP
php header Content-Type类型小结
Jul 03 PHP
PHP遍历数组的三种方法及效率对比分析
Feb 12 PHP
php递归遍历多维数组的方法
Apr 18 PHP
基于PHP制作验证码
Oct 12 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
php实现页面纯静态的实例代码
Jun 21 PHP
利用PHP扩展Xhprof分析项目性能实践教程
Sep 05 PHP
laravel 修改记住我功能的cookie保存时间的方法
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
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
2012/09/13 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
PHP abstract 抽象类定义与用法示例
2018/05/29 PHP
laravel 解决crontab不执行的问题
2019/10/22 PHP
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
使用js画图之正弦曲线
2015/01/12 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
不到40行代码用Python实现一个简单的推荐系统
2019/05/10 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
2019/06/04 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
应届生求职推荐信
2013/10/28 职场文书
读书演讲主持词
2014/03/18 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
介绍信范文
2015/01/31 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
工程质检员岗位职责
2015/04/08 职场文书
Nginx配置https的实现
2021/11/27 Servers
python数据处理之Pandas类型转换
2022/04/28 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
2022/06/21 Python