加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php导入大量数据到mysql性能优化技巧

发布时间:2020-12-13 02:18:23 所属栏目:PHP教程 来源:网络整理
导读:《php导入大量数据到mysql性能优化技巧》要点: 本文介绍了php导入大量数据到mysql性能优化技巧,希望对您有用。如果有疑问,可以联系我们。 本篇章节讲解php导入大量数据到mysql性能优化技巧.供大家参考研究.具体分析如下: PHP实战 在mysql中我们

《php导入大量数据到mysql性能优化技巧》要点:
本文介绍了php导入大量数据到mysql性能优化技巧,希望对您有用。如果有疑问,可以联系我们。

本篇章节讲解php导入大量数据到mysql性能优化技巧.分享给大家供大家参考.具体分析如下:PHP实战

在mysql中我们结合php把一些文件导入到mysql中,这里就来分享一下我对15000条记录进行导入时分析与优化,需要的朋友可以参考一下.PHP实战

之前有几篇文章,说了最近tiandi在帮朋友做一个小项目,用于统计电话号码的,每次按需求从数据库里随机生成打包的电话号码,然后不停地让人打这些电话号码推销产品(小小鄙视一下这样的行为).但是朋友要求帮忙,咱也不能不帮啊,是吧.程序两个星期前已经做好,测试完毕交工.前几天朋友来电说,每天导入电话号码的时间越来越长,有时候一万条记录就要半个小时以上,看看能不能想方法提高一下这个速度.PHP实战

我理了一下思路,数据库结构很简单,可以认为就两个字段,一个字段存电话号码,另一字段存类别,类别分别为c,d,e等等,分别代表已经拨通过此电话,未拨通过此电话,未拨打过此电话等等状态,而整个程序逻辑是这样的.PHP实战

■拿到一个txt文件,里面存的是电话号码PHP实战

■通过程序将txt文件导入到mysql里PHP实战

■导入的时候,检测txt里的电话号码是否和mysql里的重复,如果不重复,直接插入新记录,如果重复,就需要依照判断电话号码所属类别来进行更新.PHP实战

由于每个txt里的电话号码导入时,都需要做一次比较,所以程序肯定会耗时一些,这里我们先撇开这个原因,因为本文章的标题是优化写入速度,那么程序什么时候会写入记录呢?通过上面的逻辑得知,在匹配数据库时,没有发现存在记录时会发生写入数据库操作(当然update也算,只是这里只讨论insert),那么将上述逻辑转化为代码,差不多如下:
PHP实战

代码如下:
//$array为txt文件explode出来的数组,每一个为一个电话号码,$str为类型
for($i=0; $i<count($array); $i++)?
{?
??????? $tmpstr = "'". $array[$i] ."','". $str ."'";
??????? $sql="INSERT INTO ".$usertable." (tel,type) VALUES (".$tmpstr.")";
??????? mysql_query($sql);
}

以上代码完全正确,但是效率低下,当txt文件里包含了上万个电话号码时,即会有上万次的插入数据库操作,虽然每次的数据库写入操作都是很快的,但是上万条累计下来,这个执行时间不容忽视,tiandi简单的测试了一下插入15000万条记录,耗时差不多5分钟,如果再加上之前的逻辑判断等等过程,那么半个小时还真得不算少了,这样可不行,必须减少数据库库写入次数才对,于是上面代码变更为以下:
代码如下:
$sql2="INSERT INTO ".$usertable." (tel,type,updatetime) VALUES";
for($i=0; $i<count($array); $i++)?
{?
??????? $tmpstr = "'". $array[$i] ."','". $str ."'";
?$sql2 .= "(".$tmpstr."),";
}
$sql2 = substr($sql2,-1);?? //去除最后的逗号
mysql_query($sql2);

这样,整个写入操作只有1次,大大地缩短了执行时间,差不多10秒就搞定了15000条记录,好了,本文到此结束,如果你也遇上写入大量数据到mysql耗时长的问题时,不如试试本文的优化方式.

希望本文所述对大家的php程序设计有所赞助.PHP实战

《php导入大量数据到mysql性能优化技巧》是否对您有启发,欢迎查看更多与《php导入大量数据到mysql性能优化技巧》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读