MySQL : mettre à jour efficacement plusieurs lignes
Question : La mise à jour simultanée de plusieurs lignes MySQL est-elle possible ?
Réponse : Absolument ! La déclaration INSERT ... ON DUPLICATE KEY UPDATE
fournit une solution efficace.
Exemple illustratif :
Disons que nous avons un tableau structuré comme suit et que nous devons appliquer plusieurs mises à jour :
Name | id | Col1 | Col2 |
---|---|---|---|
Row1 | 1 | 6 | 1 |
Row2 | 2 | 2 | 3 |
Row3 | 3 | 9 | 5 |
Row4 | 4 | 16 | 8 |
Mises à jour requises :
UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
Mise à jour consolidée utilisant INSERT ... ON DUPLICATE KEY UPDATE
:
Au lieu de plusieurs UPDATE
déclarations individuelles, nous pouvons obtenir le même résultat avec une seule requête plus efficace :
<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>
Cette requête tente d'insérer de nouvelles lignes. Si une ligne avec le id
spécifié existe déjà (en raison de la clé primaire ou d'un index unique sur id
), la clause ON DUPLICATE KEY UPDATE
prend effet, mettant à jour les valeurs Col1
et Col2
en fonction des valeurs fournies dans la clause VALUES()
. Cette méthode améliore considérablement les performances par rapport à l'exécution de plusieurs UPDATE
instructions individuelles.
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!