Maison >base de données >tutoriel mysql >Comment les clés composites peuvent-elles améliorer les performances de « UPDATE ON DUPLICATE KEY » de MySQL ?

Comment les clés composites peuvent-elles améliorer les performances de « UPDATE ON DUPLICATE KEY » de MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 10:21:13327parcourir

How Can Composite Keys Improve MySQL's `UPDATE ON DUPLICATE KEY` Performance?

Clés composites pour des requêtes MySQL efficaces de « MISE À JOUR SUR LA CLÉ EN DUPLICATE »

Lorsque vous travaillez avec des identifiants uniques multi-colonnes dans MySQL, le défi se pose de gérer efficacement à la fois les mises à jour et insertions. Bien que la syntaxe 'UPDATE ON DUPLICATE KEY' semble être une solution appropriée, elle nécessite une clé unique pour fonctionner.

Cependant, vous pouvez créer une clé composite à partir de plusieurs colonnes, ce qui permettra 'UPDATE ON DUPLICATE KEY'. pour fonctionner comme souhaité. Voici comment procéder :

Création d'une clé composite

Pour créer une clé composite, utilisez la syntaxe suivante :

CREATE INDEX <index_name> ON <table_name> (<column1>, <column2>);

Par exemple, créons une clé composite pour le tableau à trois colonnes mentionné dans la question :

CREATE INDEX unique_index ON my_table (col_1, col_2);

Utilisation de 'UPDATE ON DUPLICATE KEY'

Une fois la clé composite créée, vous pouvez exécuter des requêtes 'UPDATE ON DUPLICATE KEY' pour mettre à jour ou insérer des enregistrements en fonction des valeurs de la clé. La syntaxe est la suivante :

INSERT INTO <table_name> (col_1, col_2, col_3) VALUES ('value1', 'value2', 'value3') ON DUPLICATE KEY UPDATE col_3=col_3+1;

Dans cette requête, si un enregistrement avec les valeurs spécifiées de col_1 et col_2 existe déjà, col_3 sera incrémenté de 1. Sinon, un nouvel enregistrement sera 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!

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