Dans MySQL, l'exécution de plusieurs requêtes peut prendre du temps. Pour optimiser les performances, il est souhaitable de combiner les requêtes en une seule. C'est le nœud d'une requête posée par Quan : deux requêtes peuvent-elles être fusionnées pour renvoyer des lignes mises à jour ?
La première requête sélectionne les lignes d'une table en fonction de critères spécifiques, tandis que la seconde met à jour les lignes répondant aux mêmes critères. La combinaison de ces requêtes nécessite une technique qui permet à la fois la lecture et l'écriture en une seule opération.
Une approche consiste à utiliser une sous-requête. Cependant, Quan a rencontré des limites avec cette méthode. Une solution alternative a émergé dans une recommandation de https://gist.github.com/PieterScheffers/189cad9510d304118c33135965e9cddb :
SET @uids := null; UPDATE footable SET foo = 'bar' WHERE fooid > 5 AND ( SELECT @uids := CONCAT_WS(',', fooid, @uids) ); SELECT @uids;
Cette requête exploite les étapes suivantes :
Cette solution combine efficacement les mises à jour et la récupération de lignes, fournissant la fonctionnalité souhaitée dans une seule requête.
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!