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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
PHP UTF8编码内的繁简转换类
Jul 20 PHP
php excel类 phpExcel使用方法介绍
Aug 21 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP连接sql server 2005环境配置及问题解决
Aug 08 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 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 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
js版本A*寻路算法
2006/12/22 Javascript
Track Image Loading效果代码分析
2007/08/13 Javascript
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
python用for循环求和的方法总结
2019/07/08 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
美国摄影爱好者购物网站:Focus Camera
2016/10/21 全球购物
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
经典c++面试题四
2015/05/14 面试题
自荐信怎么写好
2013/11/11 职场文书
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python
zabbix配置nginx监控的实现
2022/05/25 Servers