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(2)
Oct 09 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
php将gd生成的图片缓存到memcache的小例子
Jun 05 PHP
基于PHPExcel的常用方法总结
Jun 13 PHP
PHP中常用的转义函数
Feb 28 PHP
php实现excel中rank函数功能的方法
Jan 20 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
两款万能的php分页类
Nov 12 PHP
yii框架搜索分页modle写法
Dec 19 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
php中pcntl_fork创建子进程的方法实例
Mar 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
PHP开发框架总结收藏
2008/04/24 PHP
php中大括号作用介绍
2012/03/22 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
JS求平均值的小例子
2013/11/29 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
JavaScript内存泄漏的处理方式
2017/11/20 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
Vue 实现列表动态添加和删除的两种方法小结
2018/09/07 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python3 适合初学者学习的银行账户登录系统实例
2017/08/08 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
TensorFlow的权值更新方法
2018/06/14 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
pytorch梯度剪裁方式
2020/02/04 Python
浅谈django channels 路由误导
2020/05/28 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
耐克中国官方商城:Nike中国
2018/10/18 全球购物
服务标语大全
2014/06/18 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
投资入股合作协议书
2014/10/28 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js