Avatar billede warberg Juniormester
19. november 2008 - 23:05 Der er 6 kommentarer og
1 løsning

Optimering af meget langsom query

Følgende forespørgsel tager flere minutter at gennemføre:

$spiller = mysql_query("SELECT

pl.spillerid AS spillerid,
pl.holdid AS holdid,
l.kampid AS kampid,
l.spillerid AS sp_id

FROM
    player AS pl
    INNER JOIN lineup AS l
    ON (pl.spillerid = l.spillerid) OR (pl.spillerid = l.ind) OR (pl.spillerid = l.udfor)
WHERE
    l.holdid='$id' AND l.aar='$aar'
GROUP BY
  pl.spillerid

") or die(mysql_error());

Player indeholder 1700 rækker
Lineup indeholder 75000 rækker

Kan det gøres smartere?
Avatar billede arne_v Ekspert
19. november 2008 - 23:40 #1
Er der index på:

player.spillerid
lineup.spillerid
lineup.ind
lineup.udfor
lineup.holdid
lineup.aar

?

Nej => prøv og sæt det på !
Avatar billede warberg Juniormester
19. november 2008 - 23:54 #2
Det var dog.... Tak! Point til dig. Hvad er det lige det gør?
Avatar billede arne_v Ekspert
20. november 2008 - 00:11 #3
Jeg smider et svar som du kan acceptere.
Avatar billede arne_v Ekspert
20. november 2008 - 00:11 #4
Jeg kan forstå at det hjalp gevaldigt.
Avatar billede warberg Juniormester
20. november 2008 - 00:14 #5
Ja tak, kan du forklare mig hvad index gør?
Avatar billede arne_v Ekspert
20. november 2008 - 00:31 #6
Index i en database fungerer ligesom index i en bog.

Hvis du skal finde "GROUP BY" i en MySQL bog uden index er du nødt til at læse
alle siderne 1-477 for at finde det.

Hvis du skal finde det i en MySQL bog med index, så slår du op i index og læser
at der er på side 131 og går direkte til den side og læser det du skal bruge.
Avatar billede warberg Juniormester
20. november 2008 - 00:43 #7
Fantastisk, jeg takker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB