国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧

php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧

2020-08-25 11:44PHP之家 PHP教程

這篇文章主要介紹了php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧,通過(guò)針對(duì)SQL語(yǔ)句的優(yōu)化實(shí)現(xiàn)了mysql性能的提高,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了php導(dǎo)入大量數(shù)據(jù)到mysql性能優(yōu)化技巧。分享給大家供大家參考。具體分析如下:

在mysql中我們結(jié)合php把一些文件導(dǎo)入到mysql中,這里就來(lái)分享一下我對(duì)15000條記錄進(jìn)行導(dǎo)入時(shí)分析與優(yōu)化,需要的朋友可以參考一下.

之前有幾篇文章,說(shuō)了最近tiandi在幫朋友做一個(gè)小項(xiàng)目,用于統(tǒng)計(jì)電話號(hào)碼的,每次按需求從數(shù)據(jù)庫(kù)里隨機(jī)生成打包的電話號(hào)碼,然后不停地讓人打這些電話號(hào)碼推銷產(chǎn)品(小小鄙視一下這樣的行為)。但是朋友要求幫忙,咱也不能不幫啊,是吧。程序兩個(gè)星期前已經(jīng)做好,測(cè)試完畢交工。前幾天朋友來(lái)電說(shuō),每天導(dǎo)入電話號(hào)碼的時(shí)間越來(lái)越長(zhǎng),有時(shí)候一萬(wàn)條記錄就要半個(gè)小時(shí)以上,看看能不能想辦法提高一下這個(gè)速度。

我理了一下思路,數(shù)據(jù)庫(kù)結(jié)構(gòu)很簡(jiǎn)單,可以認(rèn)為就兩個(gè)字段,一個(gè)字段存電話號(hào)碼,另一字段存類別,類別分別為c,d,e等等,分別代表已經(jīng)撥通過(guò)此電話,未撥通過(guò)此電話,未撥打過(guò)此電話等等狀態(tài),而整個(gè)程序邏輯是這樣的.

■拿到一個(gè)txt文件,里面存的是電話號(hào)碼

■通過(guò)程序?qū)xt文件導(dǎo)入到mysql里

■導(dǎo)入的時(shí)候,檢測(cè)txt里的電話號(hào)碼是否和mysql里的重復(fù),如果不重復(fù),直接插入新記錄,如果重復(fù),就需要按照判斷電話號(hào)碼所屬類別來(lái)進(jìn)行更新。

由于每個(gè)txt里的電話號(hào)碼導(dǎo)入時(shí),都需要做一次比較,所以程序肯定會(huì)耗時(shí)一些,這里我們先撇開(kāi)這個(gè)原因,因?yàn)楸疚恼碌臉?biāo)題是優(yōu)化寫入速度,那么程序什么時(shí)候會(huì)寫入記錄呢?通過(guò)上面的邏輯得知,在匹配數(shù)據(jù)庫(kù)時(shí),沒(méi)有發(fā)現(xiàn)存在記錄時(shí)會(huì)發(fā)生寫入數(shù)據(jù)庫(kù)操作(當(dāng)然update也算,只是這里只討論insert),那么將上述邏輯轉(zhuǎn)化為代碼,差不多如下:

復(fù)制代碼 代碼如下:
//$array為txt文件explode出來(lái)的數(shù)組,每一個(gè)為一個(gè)電話號(hào)碼, $str為類型
for($i=0; $i<count($array); $i++) 

        $tmpstr = "'". $array[$i] ."','". $str ."'";
        $sql="INSERT INTO ".$usertable." (tel,type) VALUES (".$tmpstr.")";
        mysql_query($sql);
}


以上代碼完全正確,但是效率低下,當(dāng)txt文件里包含了上萬(wàn)個(gè)電話號(hào)碼時(shí),即會(huì)有上萬(wàn)次的插入數(shù)據(jù)庫(kù)操作,雖然每次的數(shù)據(jù)庫(kù)寫入操作都是很快的,但是上萬(wàn)條累計(jì)下來(lái),這個(gè)執(zhí)行時(shí)間不容忽視,tiandi簡(jiǎn)單的測(cè)試了一下插入15000萬(wàn)條記錄,耗時(shí)差不多5分鐘,如果再加上之前的邏輯判斷等等過(guò)程,那么半個(gè)小時(shí)還真得不算少了,這樣可不行,必須減少數(shù)據(jù)庫(kù)庫(kù)寫入次數(shù)才對(duì),于是上面代碼變更為以下:

復(fù)制代碼 代碼如下:
$sql2="INSERT INTO ".$usertable." (tel,type,updatetime) VALUES";
for($i=0; $i<count($array); $i++) 

        $tmpstr = "'". $array[$i] ."','". $str ."'";
 $sql2 .= "(".$tmpstr."),";
}
$sql2 = substr($sql2,0,-1);   //去除最后的逗號(hào)
mysql_query($sql2);


這樣,整個(gè)寫入操作只有1次,大大地縮短了執(zhí)行時(shí)間,差不多10秒就搞定了15000條記錄,好了,本文到此結(jié)束,如果你也遇上寫入大量數(shù)據(jù)到mysql耗時(shí)長(zhǎng)的問(wèn)題時(shí),不如試試本文的優(yōu)化方式.

 

希望本文所述對(duì)大家的php程序設(shè)計(jì)有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 视频一二区 | 欧美精品v国产精品v日韩精品 | 亚洲精品资源在线观看 | 精品久久久久久久人人人人传媒 | 99在线播放 | 久久久99国产精品免费 | 黄色精品一区二区 | 四房婷婷 | 久久天天 | 夜夜摸夜夜操 | 久久男人天堂 | 中文字幕一区二区三区乱码图片 | 亚洲精品二区 | 日本一区二区三区四区 | 婷婷色av | 国产精品1 | 日本精品久久久 | 91精品国产综合久久福利软件 | 最新黄网 | 欧美在线不卡 | 欧美成人h版在线观看 | 久久极品| 在线观看欧美一区 | 亚洲精品视频大全 | 日韩在线视频一区 | 草草精品视频 | 亚洲自拍偷拍在线 | 久久99精品久久久久久国产越南 | 欧美日韩中文在线 | 精品国产子伦久久久久久小说 | 精品久久久久久久久久久久 | 一级黄色片欧美 | 自拍偷拍在线视频 | 久久国产精品免费一区二区三区 | 久久久天天 | 日韩欧美国产一区二区 | 国产欧美一区二区精品性色 | 久久精品一区二区三区四区 | 色官网| 国产精品视频久久 | 久久久久国产一区二区三区 |