php快速導(dǎo)入大量數(shù)據(jù)的實(shí)例方法
PHP快速導(dǎo)入大量數(shù)據(jù)到數(shù)據(jù)庫的方法
第一種方法:使用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個(gè)小時(shí)多!
第二種方法:使用事務(wù)提交,批量插入數(shù)據(jù)庫(每隔10W條提交下)最后顯示消耗的時(shí)間為: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;
消耗時(shí)間為: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í),第一種方法無疑是最差勁的,而第二種方法在實(shí)際應(yīng)用中就比較廣泛,第三種方法在插入測試數(shù)據(jù)或者其他低要求時(shí)比較合適,速度確實(shí)快。
感謝大家的學(xué)習(xí)和對腳本之家的支持。
相關(guān)文章
PHP的郵件群發(fā)系統(tǒng)phplist配置方法詳細(xì)總結(jié)
這篇文章主要介紹了PHP郵件群發(fā)系統(tǒng)phplist配置方法,結(jié)合實(shí)例形式詳細(xì)總結(jié)分析了PHP郵件群發(fā)系統(tǒng)phplist的配置與使用技巧,需要的朋友可以參考下2016-03-03PHP pthreads v3使用中的一些坑和注意點(diǎn)分析
這篇文章主要介紹了PHP pthreads v3使用中的一些坑和注意點(diǎn),總結(jié)分析了PHP pthreads v3使用過程中經(jīng)常遇到的各種問題及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-02-02php fputcsv命令 寫csv文件遇到的小問題(多維數(shù)組連接符)
fputcsv() 將一行(用 fields數(shù)組傳遞)格式化為 CSV 格式并寫入由 handle指定的文件2011-05-05PHP中實(shí)現(xiàn)多語言支持的幾種方式總結(jié)
本給大家介紹了PHP中實(shí)現(xiàn)多語言支持的幾種方式總結(jié), 使用數(shù)組或關(guān)聯(lián)數(shù)組,使用gettext擴(kuò)展和使用第三方庫這三種方式,文章通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12phpmailer發(fā)送郵件之后,返回收件人是否閱讀了郵件的方法
這篇文章主要介紹了phpmailer發(fā)送郵件之后,返回收件人是否閱讀了郵件的方法,該功能非常簡單實(shí)用,需要的朋友可以參考下2014-07-07