Maison >base de données >tutoriel mysql >Comment puis-je trouver efficacement la valeur maximale dans une colonne pour chaque groupe d'un grand tableau ?
Trouver la valeur maximale dans la colonne groupée d'un grand tableau
Dans cet exemple, vous devez extraire la ligne avec la valeur maximale d'une colonne spécifique de chaque groupe d'une grande table sans effectuer une recherche multi-tables inefficace. Considérez le formulaire suivant :
<code>SCORES ID ROUND SCORE 1 1 3 1 2 6 1 3 2 2 1 10 2 2 12 3 1 6</code>
Votre objectif est de récupérer le dernier tour pour chaque identifiant unique et le score correspondant. Le résultat souhaité est le suivant :
<code>ID ROUND SCORE 1 2 6 2 2 12 3 1 6</code>
Solution efficace utilisant les fonctions de fenêtre
Une méthode efficace consiste à utiliser les fonctions de fenêtre en conjonction avec le mot-clé DISTINCT :
<code class="language-sql">SELECT DISTINCT id ,MAX(round) OVER (PARTITION BY id) AS round ,FIRST_VALUE(score) OVER (PARTITION BY id ORDER BY round DESC) AS score FROM SCORES WHERE id IN (1,2,3) ORDER BY id;</code>
Cette requête utilise les concepts clés suivants :
Cette requête optimisée renvoie efficacement le dernier tour et le dernier score pour chaque ID unique sans avoir besoin d'analyser la table plusieurs fois, restant efficace même pour les grandes tables.
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!