Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour efficacement plusieurs lignes dans MySQL ?

Comment puis-je mettre à jour efficacement plusieurs lignes dans MySQL ?

DDD
DDDoriginal
2025-01-21 20:16:14265parcourir

How Can I Efficiently Update Multiple Rows in MySQL?

Optimisation des mises à jour MySQL multi-lignes

Bien que les mises à jour MySQL sur une seule ligne soient simples, la mise à jour efficace de plusieurs lignes nécessite une approche différente. Les mises à jour par lots offrent des améliorations substantielles des performances par rapport aux instructions UPDATE individuelles, minimisant ainsi les interactions avec la base de données.

Tirer parti INSERT ... ON DUPLICATE KEY UPDATE

La construction

MySQL INSERT ... ON DUPLICATE KEY UPDATE est idéale pour cette tâche. Cette instruction unique gère à la fois l'insertion et la mise à jour, selon qu'une clé correspondante existe déjà.

Exemple pratique de mise à jour multi-lignes

Illustrons avec un exemple de tableau :

<code>Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8</code>

La requête suivante met à jour efficacement plusieurs lignes :

<code class="language-sql">INSERT INTO table (id, Col1, Col2) VALUES (1, 1, 1), (2, 2, 3), (3, 9, 3), (4, 10, 12)
ON DUPLICATE KEY UPDATE Col1 = VALUES(Col1), Col2 = VALUES(Col2);</code>

Fonctionnalité de cette requête :

  • Tentatives d'insertion de lignes avec les ID 1, 2, 3 et 4.
  • Si une ligne avec un ID donné existe déjà, elle met à jour les valeurs Col1 et Col2 de cette ligne avec les valeurs correspondantes fournies dans la clause VALUES.
  • Si une ligne avec un identifiant donné n'existe pas, elle insère une nouvelle ligne avec les données spécifiées.

Cette approche consolidée améliore considérablement les performances en réduisant le nombre d'allers-retours entre les serveurs de base de données, ce qui accélère les opérations de mise à jour.

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