Maison  >  Article  >  développement back-end  >  Comment gérer de grandes quantités de données dans une base de données PHP

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

(*-*)浩
(*-*)浩original
2019-10-17 09:56:492089parcourir

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)");
}

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);

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 )
.

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!

Déclaration:
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