ホームページ > バックエンド開発 > PHPの問題 > PHPデータベース内の大量のデータを処理する方法

PHPデータベース内の大量のデータを処理する方法

(*-*)浩
リリース: 2023-02-27 06:02:01
オリジナル
2171 人が閲覧しました

一度に n 個のデータをループするビジネス ニーズがあります。データベースを挿入または更新するときに、単純にループ、挿入/更新を行うと、大量のデータベース リソースが消費されます

PHPデータベース内の大量のデータを処理する方法

次は簡単な解決策です

データベースの挿入はバッチで更新できます。大量のデータが周期的に挿入される場合、挿入コマンドを実行し、tp の addAll() メソッドなど、最後の項目に到達したら一度に挿入します; (推奨学習: PHP ビデオ チュートリアル )

データベースの更新 if case when を使えば、一括で更新することもできます。

この記事では主にバッチ挿入について説明します。

注文の生成

通常のステートメントは次のとおりです:

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)");
}
ログイン後にコピー

ショッピングカート内の 1,000 個の商品を一度に決済して 1,000 個の注文を生成するユーザーがいるとします;

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート