>  기사  >  백엔드 개발  >  PHP 데이터베이스에서 대량의 데이터를 처리하는 방법

PHP 데이터베이스에서 대량의 데이터를 처리하는 방법

(*-*)浩
(*-*)浩원래의
2019-10-17 09:56:492130검색

n개의 데이터를 한 번에 루핑해야 하는 비즈니스 요구 사항이 있습니다. 데이터베이스를 삽입하거나 업데이트할 때 단순히 루핑하고 삽입/업데이트하면 너무 많은 데이터베이스 리소스가 소모됩니다.

PHP 데이터베이스에서 대량의 데이터를 처리하는 방법

다음은 간단한 해결 방법입니다

데이터베이스 삽입은 대량의 데이터를 주기적으로 삽입할 때 삽입 명령을 실행하지 않고도 데이터를 유지할 수 있으며 addAll() 메서드와 같이 마지막 항목을 한 번에 삽입할 수 있습니다. tp; (학습 권장 사항:PHP 비디오 튜토리얼)

데이터베이스 업데이트를 사용하는 경우 일괄 업데이트도 가능합니다.

이 문서에서는 주로 일괄 삽입에 대해 설명합니다.

주문 생성

일반적인 설명은 다음과 같습니다.

INSERT INTO order (`goods_id`,`num`,`price`) VALUES (1,1,'10.00');
//封装成函数
function add_order($goods_id,$num,$price){
$db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)");
}

한 번에 장바구니에 있는 1000개의 항목을 주문으로 처리하고 1000개의 주문을 생성하는 사용자가 있다고 가정합니다. ;

for ($i=0;$i<1000;$i++){
$db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)");
}
//这样的话会导致服务器资源占用过大,网站卡死
//所以,我们可以
$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);

그런 의미입니다. 일괄 업데이트를 구현하는 것이 좀 번거로워서 게시하지 않겠습니다. 일괄 업데이트에 대한 SQL 실행문입니다

UPDATE tiyan.dm_user_cupboard SET `res_id` = CASE `id` WHEN 1041 THEN &#39;1&#39; WHEN 1058 THEN &#39;1&#39; WHEN 1055 THEN &#39;1&#39;  END,`food_code` = CASE `id` WHEN 1041 THEN &#39;68&#39; WHEN 1058 THEN &#39;47&#39; WHEN 1055 THEN &#39;49&#39;  END,`food_name` = CASE `id` WHEN 1041 THEN &#39;红枣&#39; WHEN 1058 THEN &#39;莲藕&#39; WHEN 1055 THEN &#39;洋葱&#39;  END,`num` = CASE `id` WHEN 1041 THEN &#39;2&#39; WHEN 1058 THEN &#39;3&#39; WHEN 1055 THEN &#39;2&#39;  END,`level` = CASE `id` WHEN 1041 THEN &#39;2&#39; WHEN 1058 THEN &#39;2&#39; WHEN 1055 THEN &#39;2&#39;  END,`update_time` = CASE `id` WHEN 1041 THEN &#39;2017-12-09 21:40:06&#39; WHEN 1058 THEN &#39;2017-12-09 21:40:06&#39; WHEN 1055 THEN &#39;2017-12-09 21:40:06&#39;  END WHERE id IN ( 1041,1058,1055 )
.

위 내용은 PHP 데이터베이스에서 대량의 데이터를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.