Maison > base de données > tutoriel mysql > Comment puis-je optimiser les requêtes MySQL INSERT à l'aide de « ON DUPLICATE KEY UPDATE » ?

Comment puis-je optimiser les requêtes MySQL INSERT à l'aide de « ON DUPLICATE KEY UPDATE » ?

Patricia Arquette
Libérer: 2024-12-09 01:23:10
original
300 Les gens l'ont consulté

How Can I Optimize MySQL INSERT Queries Using

Optimisation des requêtes INSERT avec "ON DUPLICATE KEY UPDATE"

Le système de base de données MySQL fournit la clause "ON DUPLICATE KEY UPDATE" pour gérer les scénarios où une tentative d'insertion d'un enregistrement avec une clé primaire en double déclenche une opération de mise à jour. Cet article explique comment tirer parti de cette clause pour obtenir des mises à jour efficaces et concises.

INSERT standard avec spécification de champ complète

Lors de la tentative d'insertion d'un enregistrement avec une clé en double, vous pouvez recourir à la spécification de toutes les valeurs de champ dans la clause "ON DUPLICATE KEY UPDATE":

INSERT INTO table (id, a, b, c, d, e, f, g)
VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=2, b=3, c=4, d=5, e=6, f=7, g=8;
Copier après la connexion

Alors que cette approche garantit que tous les champs sont mis à jour correctement, cela nécessite une spécification redondante des valeurs déjà fournies dans l'insertion initiale.

Utilisation des valeurs de champ de l'instruction INSERT

Pour éviter la redondance , vous pouvez exploiter la syntaxe "VALUES()" dans la clause "ON DUPLICATE KEY UPDATE" :

INSERT INTO table (id, a, b, c, d, e, f, g)
VALUES (1, 2, 3, 4, 5, 6, 7, 8)
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c=VALUES(c),
                              d=VALUES(d), e=VALUES(e), f=VALUES(f), g=VALUES(g);
Copier après la connexion

Cette syntaxe fait référence aux valeurs d'origine de l'instruction insert, évitant ainsi d'avoir à les spécifier à nouveau.

Mises à jour redondantes et considérations LAST_INSERT_ID

Il est important de noter que si les valeurs de champ existantes correspondent aux nouveaux, MySQL n'effectuera aucune mise à jour. Par conséquent, il est essentiel de déterminer si tous les champs doivent réellement être spécifiés dans la clause "ON DUPLICATE KEY UPDATE".

De plus, la récupération de l'ID généré par LAST_INSERT_ID() peut nécessiter une manipulation supplémentaire, en fonction du backend spécifique. l'application ou le middleware que vous utilisez. Dans certains cas, vous devrez peut-être interroger la base de données séparément pour obtenir le dernier identifiant inséré.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal