Comment gérer de grandes quantités de données dans une base de données PHP

(*-*)浩
Libérer: 2023-02-27 06:02:01
original
2137 Les gens l'ont consulté

Il existe une exigence commerciale qui nécessite de boucler n éléments de données à la fois. Lors de l'insertion ou de la mise à jour de la base de données, une simple boucle, une insertion/une mise à jour consommera trop de ressources de base de données

Comment gérer de grandes quantités de données dans une base de données PHP<.>

Ce qui suit est une solution simple

Les insertions de base de données peuvent être mises à jour par lots Lorsqu'une grande quantité de données est insérée dans une boucle, les données peuvent être mises à jour. conservé en premier. Exécutez la commande d'insertion et insérez le dernier élément à la fois, comme la méthode addAll() de tp; (Apprentissage recommandé : Tutoriel vidéo PHP)

Mise à jour de la base de données si Si vous utilisez le cas quand, vous pouvez également mettre à jour par lots.

Cet article parle principalement de l'insertion par lots

Générer une commande

L'instruction normale est :

INSERT INTO order (`goods_id`,`num`,`price`) VALUES (1,1,&#39;10.00&#39;);
//封装成函数
function add_order($goods_id,$num,$price){
$db->query("INSERT INTO order (`goods_id`,`num`,`price`) VALUES ($goods_id,$num,$price)");
}
Copier après la connexion

Supposons qu'il y ait un utilisateur qui règle 1 000 articles dans le panier en commandes à la fois et génère 1 000 commandes

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);
Copier après la connexion

C'est probablement ce que cela signifie. C'est un peu plus difficile de mettre en œuvre des mises à jour par lots, donc je. Je ne le publierai pas. Ce qui suit est l'instruction d'exécution SQL pour la mise à jour par lots

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 )
Copier après la connexion
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal