webForumDet fria alternativet

Optimera fråga

2 svar · 529 visningar · startad av Uwe

UweMedlem sedan nov. 2003181 inlägg
#1

Jag har skrivit en fråga som fungerar men som jag inte tror är speciellt effektiv ur prestandasynpukt. Det borde gå att skriva snyggare tror jag.

Det jag vill göra är att få fram den främsta målskytten i respektive lag. Om det finns flera spelare med samma antal mål ska den med flest assist visas..

Frågan jag har idag:

Select team, player, goals, assists
from players p1
where p1.goals=(select max(p2.goals) from players p2 where p2.team=p1.team)
and p1.assists=(select max(p3.assists) from players p3 where p3.goals=p1.goals and p3.team=p1.team)

Databasen är en mysql 5.

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Du kan ju jämföra prestandan med denna, vars ena subquery är konstant men innehåller en join:

select p.team
     , p.player
     , p.goals
     , p.assists
  from players p
inner
  join ( select team
              , max(goals) goals
           from players
         group
             by team ) dt
    on p.team  = dt.team
   and p.goals = dt.goals
 where p.assists
     = ( select max(assists)
           from players
          where team  = p.team
            and goals = p.goals )
UweMedlem sedan nov. 2003181 inlägg
#3

Tack Peter S, jag ska testa med den. Rent spontant tror jag ditt förslag har bättre prestanda.

125 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)