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&amp;&amp;mysql)六
Oct 09 PHP
php中根据变量的类型 选择echo或dump
Jul 05 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
20个2014年最优秀的PHP框架回顾
Oct 22 PHP
PHP实现下载断点续传的方法
Nov 12 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
CI框架整合smarty步骤详解
May 19 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
Python中使用django form表单验证的方法
Jan 16 PHP
php7 错误处理机制修改实例分析
May 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
如何隐藏你的.php文件
2007/01/04 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
Using the TextRange Object
2006/10/14 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
JavaScript使用concat连接数组的方法
2015/04/06 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
[00:32]DOTA2上海特级锦标赛 Ehome战队宣传片
2016/03/03 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
Python加速程序运行的方法
2020/07/29 Python
html5声频audio和视频video等新特性详细说明
2012/12/26 HTML / CSS
会计自我鉴定范文
2013/10/06 职场文书
大学生个人先进事迹材料范文
2014/05/03 职场文书
小学安全汇报材料
2014/08/14 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
个人租房协议书范本
2014/09/30 职场文书
安全月宣传标语
2014/10/07 职场文书
财务检查整改报告
2014/11/06 职场文书
2014年应急管理工作总结
2014/11/26 职场文书
毕业论文答辩开场白和答辩技巧
2015/05/27 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
如何利用python实现Simhash算法
2022/06/28 Python
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python