Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement les valeurs maximales et les données correspondantes dans SQL ?

Comment puis-je récupérer efficacement les valeurs maximales et les données correspondantes dans SQL ?

DDD
Libérer: 2025-01-07 17:17:09
original
254 Les gens l'ont consulté

How Can I Efficiently Retrieve Maximum Values and Corresponding Data in SQL?

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>
Copier après la connexion

Voici comment fonctionne cette requête :

  • Requête interne : Ceci sélectionne toutes les colonnes (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.
  • Requête externe : Ceci filtre les résultats de la requête interne, en sélectionnant uniquement les lignes où 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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal