php大量數(shù)據(jù)入庫(kù)的處理方法?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
為東山等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及東山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、東山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
有業(yè)務(wù)需求需要一次性循環(huán)n條數(shù)據(jù),插入或更新數(shù)據(jù)庫(kù)時(shí),如果單純的循環(huán),插入/更新,會(huì)消耗太多的數(shù)據(jù)庫(kù)資源
以下是一種簡(jiǎn)單的解決方案
數(shù)據(jù)庫(kù)的insert是可以批量更新的,當(dāng)有大量數(shù)據(jù)循環(huán)insert時(shí),可以將數(shù)據(jù)先保留不執(zhí)行插入命令,到最后一條時(shí)一次性插入,例如tp的addAll()方法;
數(shù)據(jù)庫(kù)的update 如果使用case when 的話,也是可以批量更新的。
本文主要講關(guān)于批量insert;
生成一個(gè)訂單
正常情況的語句為:
INSERT INTO order (`goods_id`,`num`,`price`) VALUES (1,1,'10.00'); //封裝成函數(shù) function add_order($goods_id,$num,$price){ $db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)"); }
假設(shè)有一個(gè)用戶,一次性將購(gòu)物車的1000個(gè)商品結(jié)算成訂單,生成1000個(gè)訂單時(shí);
for ($i=0;$i<1000;$i++){ $db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)"); } //這樣的話會(huì)導(dǎo)致服務(wù)器資源占用過大,網(wǎng)站卡死 //所以,我們可以 $sql = "INSERT INTO order (`goods_id`,`num`,`price`) VALUES "; for ($i=0;$i<1000;$i++){ if($i==0){ $sql.="($goods_id,$num,$price)"; }else{ $sql.=",($goods_id,$num,$price)"; } } $db->query($sql);
大概意思就是這樣了,批量更新實(shí)現(xiàn)比較麻煩一點(diǎn),就不發(fā)了,以下是批量更新的sql執(zhí)行語句
UPDATE tiyan.dm_user_cupboard SET `res_id` = CASE `id` WHEN 1041 THEN '1' WHEN 1058 THEN '1' WHEN 1055 THEN '1' END,`food_code` = CASE `id` WHEN 1041 THEN '68' WHEN 1058 THEN '47' WHEN 1055 THEN '49' END,`food_name` = CASE `id` WHEN 1041 THEN '紅棗' WHEN 1058 THEN '蓮藕' WHEN 1055 THEN '洋蔥' END,`num` = CASE `id` WHEN 1041 THEN '2' WHEN 1058 THEN '3' WHEN 1055 THEN '2' END,`level` = CASE `id` WHEN 1041 THEN '2' WHEN 1058 THEN '2' WHEN 1055 THEN '2' END,`update_time` = CASE `id` WHEN 1041 THEN '2017-12-09 21:40:06' WHEN 1058 THEN '2017-12-09 21:40:06' WHEN 1055 THEN '2017-12-09 21:40:06' END WHERE id IN ( 1041,1058,1055 )
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)php大量數(shù)據(jù)入庫(kù)的處理方法大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。