Maison >base de données >tutoriel mysql >L'utilisation de plusieurs instructions SELECT est-elle efficace pour l'insertion de tables complexes ?

L'utilisation de plusieurs instructions SELECT est-elle efficace pour l'insertion de tables complexes ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 05:44:10952parcourir

Is Using Multiple SELECT Statements Efficient for Upserting with Complex Tables?

Upsert avec des tables complexes : mise à jour de plusieurs colonnes

Lors de l'exécution d'opérations d'upsert avec plusieurs colonnes, la question se pose de savoir s'il est efficace d'utiliser plusieurs sélectionnez les instructions dans la partie mise à jour. Bien que cela soit techniquement réalisable, une meilleure approche est disponible.

Considérez l'exemple fourni :

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES('A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = 27 + (SELECT items_in_stock where item_name = 'A')

Cette requête ajoute effectivement la quantité entrante à la valeur existante pour l'article spécifié. Cependant, la sous-sélection n'est pas nécessaire.

La version corrigée de la requête est la suivante :

INSERT INTO `item`
(`item_name`, items_in_stock)
VALUES( 'A', 27)
ON DUPLICATE KEY UPDATE
`new_items_count` = `new_items_count` + 27

En omettant la sous-sélection, la requête utilise la capacité de MySQL à référencer la ligne qui a déclenché l'activation. Action CLÉ EN DUPLICATION. Cela élimine le besoin d'instructions de sélection supplémentaires et rationalise le processus de mise à jour.

N'oubliez pas que la simplicité est souvent la clé d'opérations efficaces. En examinant attentivement les options disponibles et en évitant toute complexité inutile, vous pouvez optimiser vos requêtes d'insertion en termes de performances et de lisibilité du code.

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