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 相关文章推荐
Discuz板块横排显示图片的实现方法
May 28 PHP
PHP HTML代码串截取代码
Dec 29 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
PHP中json_encode、json_decode与serialize、unserialize的性能测试分析
Jun 09 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
Jul 22 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
PHP开发注意事项总结
Feb 04 PHP
php+ajax实现无刷新分页
Nov 18 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
详解php中serialize()和unserialize()函数
Jul 08 PHP
php如何计算两坐标点之间的距离
Dec 29 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使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
移动端js图片查看器
2016/11/17 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[01:29:31]VP VS VG Supermajor小组赛胜者组第二轮 BO3第一场 6.2
2018/06/03 DOTA
python中while循环语句用法简单实例
2015/05/07 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
Python构建XML树结构的方法示例
2017/06/30 Python
python实现类之间的方法互相调用
2018/04/29 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python datetime包函数简单介绍
2019/08/28 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
瑞典多品牌连锁店:Johnells
2021/01/13 全球购物
一套Java笔试题
2016/08/20 面试题
销售辞职报告范文
2014/01/12 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
平安工地汇报材料
2014/08/19 职场文书
区域经理岗位职责
2015/02/02 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
2016党校培训心得体会
2016/01/07 职场文书
各种货币符号快捷输入
2022/02/17 杂记