PHP大批量插入數(shù)據(jù)庫的3種方法和速度對比
第一種方法:使用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個小時多!
第二種方法:使用事務(wù)提交,批量插入數(shù)據(jù)庫(每隔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”);
第三種方法:使用優(yōu)化SQL語句:將SQL語句進(jìn)行拼接,使用 insert into table () values (),(),(),()然后再一次性插入,如果字符串太長,
則需要配置下MYSQL,在mysql 命令行中運(yùn)行 :set global max_allowed_packet = 2*1024*1024*10;消耗時間為:11:24:06 11:25:06;
插入200W條測試數(shù)據(jù)僅僅用了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);
最后總結(jié)下,在插入大批量數(shù)據(jù)時,第一種方法無疑是最差勁的,而第二種方法在實(shí)際應(yīng)用中就比較廣泛,第三種方法在插入測試數(shù)據(jù)或者其他低要求時比較合適,速度確實(shí)快。
相關(guān)文章
Python中使用django form表單驗(yàn)證的方法
這篇文章主要介紹了Python中使用django form表單驗(yàn)證的方法,需要的朋友可以參考下2017-01-01淺談php中的訪問修飾符private、protected、public的作用范圍
下面小編就為大家?guī)硪黄獪\談php中的訪問修飾符private、protected、public的作用范圍。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11PHP實(shí)現(xiàn)linux命令tail -f
tail 命令從指定點(diǎn)開始將文件寫到標(biāo)準(zhǔn)輸出.使用tail命令的-f選項(xiàng)可以方便的查閱正在改變的日志文件,tail -f filename會把filename里最尾部的內(nèi)容顯示在屏幕上,并且不但刷新,使你看到最新的文件內(nèi)容.接下來通過本文給大家介紹PHP實(shí)現(xiàn)linux命令tail -f,需要的朋友參考下2016-02-02發(fā)款php蜘蛛統(tǒng)計插件只要有mysql就可用
有時候我們?yōu)榱丝匆幌轮┲肱佬械那闆r,不得不對日志進(jìn)行大量的分析,由此想做一款插件可以記錄蜘蛛的情況。在第一次做的時候,只是記錄下蜘蛛的爬行次數(shù),不大好分析。2010-10-10Yii使用ajax驗(yàn)證顯示錯誤messagebox的解決方法
這篇文章主要介紹了Yii使用ajax驗(yàn)證顯示錯誤messagebox的解決方法,可以自行設(shè)置Ajax提示信息的方式,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12Zend Framework實(shí)現(xiàn)多文件上傳功能實(shí)例
這篇文章主要介紹了Zend Framework實(shí)現(xiàn)多文件上傳功能的方法,較為詳細(xì)的分析說明了Zend Framework實(shí)現(xiàn)多文件上傳的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03PHP實(shí)現(xiàn)單條sql執(zhí)行多個數(shù)據(jù)的insert語句方法
今天小編就為大家分享一篇PHP實(shí)現(xiàn)單條sql執(zhí)行多個數(shù)據(jù)的insert語句方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10