Maison > base de données > tutoriel mysql > Comment puis-je effectuer efficacement des upserts dans MySQL avec la gestion des clés en double ?

Comment puis-je effectuer efficacement des upserts dans MySQL avec la gestion des clés en double ?

Susan Sarandon
Libérer: 2024-12-08 13:41:11
original
1018 Les gens l'ont consulté

How Can I Efficiently Perform Upserts in MySQL with Duplicate Key Handling?

Requête Upsert efficace pour la mise à jour de clé en double

Lors de l'insertion de données dans une table MySQL avec un index unique, il est souvent nécessaire de mettre à jour une table existante enregistrer si la clé existe déjà. Pour ce faire, une clause "ON DUPLICATE KEY UPDATE" est généralement utilisée, spécifiant les champs à modifier. Cependant, spécifier à nouveau tous les champs peut s'avérer inefficace.

Syntaxe alternative

Une approche plus simple consiste à utiliser la fonction VALUES(), comme indiqué ci-dessous :

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 évite d'avoir à spécifier chaque champ deux fois, ce qui rend la requête plus concis.

Envisagez d'éviter les mises à jour

Il est important de noter que la mise à jour des champs avec les mêmes valeurs qu'ils ont déjà n'est pas nécessaire. Si l'enregistrement existant contient déjà les mêmes données que l'insertion, il n'est pas nécessaire d'effectuer une mise à jour. La syntaxe suivante peut être utilisée pour éviter les mises à jour inutiles :

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=a, b=b, c=c, d=d, e=e, f=f, g=g;
Copier après la connexion

Récupération de l'ID du dernier insert

Pour obtenir l'ID de l'enregistrement nouvellement inséré ou mis à jour, le la syntaxe dépend de l'application backend utilisée. Par exemple, dans LuaSQL, la fonction conn:getlastautoid() peut être utilisée pour récupérer la valeur.

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