91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php導入大量數據到mysql性能優化的方法

發布時間:2021-06-29 10:56:11 來源:億速云 閱讀:259 作者:chen 欄目:開發技術

這篇文章主要介紹“php導入大量數據到mysql性能優化的方法”,在日常操作中,相信很多人在php導入大量數據到mysql性能優化的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”php導入大量數據到mysql性能優化的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

本文實例講述了php導入大量數據到mysql性能優化技巧。分享給大家供大家參考。具體分析如下:

在mysql中我們結合php把一些文件導入到mysql中,這里就來分享一下我對15000條記錄進行導入時分析與優化,需要的朋友可以參考一下.

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

我理了一下思路,數據庫結構很簡單,可以認為就兩個字段,一個字段存電話號碼,另一字段存類別,類別分別為c,d,e等等,分別代表已經撥通過此電話,未撥通過此電話,未撥打過此電話等等狀態,而整個程序邏輯是這樣的.

■拿到一個txt文件,里面存的是電話號碼

■通過程序將txt文件導入到mysql里

■導入的時候,檢測txt里的電話號碼是否和mysql里的重復,如果不重復,直接插入新記錄,如果重復,就需要按照判斷電話號碼所屬類別來進行更新。

由于每個txt里的電話號碼導入時,都需要做一次比較,所以程序肯定會耗時一些,這里我們先撇開這個原因,因為本文章的標題是優化寫入速度,那么程序什么時候會寫入記錄呢?通過上面的邏輯得知,在匹配數據庫時,沒有發現存在記錄時會發生寫入數據庫操作(當然update也算,只是這里只討論insert),那么將上述邏輯轉化為代碼,差不多如下:

復制代碼 代碼如下:

//$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,0,-1);   //去除最后的逗號
mysql_query($sql2);


這樣,整個寫入操作只有1次,大大地縮短了執行時間,差不多10秒就搞定了15000條記錄,好了,本文到此結束,如果你也遇上寫入大量數據到mysql耗時長的問題時,不如試試本文的優化方式.

到此,關于“php導入大量數據到mysql性能優化的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凌云县| 酒泉市| 扶沟县| 交城县| 凤城市| 墨竹工卡县| 长沙市| 汽车| 临武县| 兴和县| 白玉县| 吉林市| 云浮市| 武清区| 泗洪县| 高州市| 上思县| 平昌县| 罗江县| 商城县| 永顺县| 淄博市| 胶州市| 朝阳县| 榆社县| 靖边县| 祁东县| 怀仁县| 香格里拉县| 梓潼县| 长岭县| 邢台县| 桐柏县| 乌鲁木齐市| 亚东县| 镇赉县| 高雄县| 涟水县| 夹江县| 丹凤县| 弥勒县|