乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

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

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

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

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

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

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

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

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

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

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

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

      以上代碼完全正確,但是效率低下,當txt文件里包含了上萬個電話號碼時,即會有上萬次的插入數(shù)據(jù)庫操作,雖然每次的數(shù)據(jù)庫寫入操作都是很快的,但是上萬條累計下來,這個執(zhí)行時間不容忽視,tiandi簡單的測試了一下插入15000萬條記錄,耗時差不多5分鐘,如果再加上之前的邏輯判斷等等過程,那么半個小時還真得不算少了,這樣可不行,必須減少數(shù)據(jù)庫庫寫入次數(shù)才對,于是上面代碼變更為以下:
      復制代碼 代碼如下:
      $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次,大大地縮短了執(zhí)行時間,差不多10秒就搞定了15000條記錄,好了,本文到此結束,如果你也遇上寫入大量數(shù)據(jù)到mysql耗時長的問題時,不如試試本文的優(yōu)化方式.

      希望本文所述對大家的php程序設計有所幫助。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多