Optimisation des requêtes SQL : récupération des valeurs maximales et des données associées
Cet article présente une méthode efficace pour récupérer le numéro de version maximum pour chaque ID et sa balise correspondante à partir d'une grande table SQL. Évitez les méthodes moins efficaces comme les requêtes imbriquées ou le regroupement simple.
La solution optimale utilise la fonction ROW_NUMBER()
:
<code class="language-sql">SELECT s.id, s.tag, s.version FROM ( SELECT t.*, ROW_NUMBER() OVER(PARTITION BY t.id ORDER BY t.version DESC) AS rnk FROM YourTable t ) s WHERE s.rnk = 1;</code>
Voici comment fonctionne cette requête :
t.*
) de YourTable
(remplacez YourTable
par le nom réel de votre table). Surtout, il attribue un rang (rnk
) à chaque ligne de chaque id
partition, classé par version
par ordre décroissant. Le version
le plus élevé pour chaque id
reçoit un rang de 1.rnk = 1
. Cela isole efficacement le maximum version
et ses id
et tag
associés pour chaque id
unique.L'utilisation de ROW_NUMBER()
offre un avantage significatif en termes de performances par rapport aux approches alternatives, en particulier avec de grands ensembles de données. Il évite la surcharge de performances des requêtes imbriquées ou des clauses GROUP BY
avec des fonctions d'agrégation, ce qui en fait la méthode privilégiée pour une récupération efficace des données dans ce scénario.
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!