Gå til innhold

[Løst]Spørring tar svært lang tid


Anbefalte innlegg

Jeg har en tabell med en hel del "items". Disse tilhører noen ulike grupper og har derfor et groupid-felt. Det jeg forsøker å få til er å hente ut den nyeste "item"-en fra hver gruppe. Jeg får det forsåvidt til men spørringen ser ut til å ta alt for lang tid. Den ser omtrent slik ut:

 

SELECT * FROM items
WHERE timestamp IN (
			  SELECT max(timestamp)
			  FROM items
			  GROUP BY groupid
)
ORDER BY timestamp DESC

 

For å forklare spørringen litt mer så lages det altså først en liste over hver gruppes maksimale timestamp og så hentes alle "items" som har ett av disse timestampene.

 

Dette tar 10-15 sekunder å kjøre. Hvorfor det? Og er det bedre løsninger?

Lenke til kommentar
Videoannonse
Annonse

Er noen av disse kolonnene med i en primary key? Inngår noen av disse kolonnene i en index? Isåfall hvilke kolonner og hvilken rekkefølge er kolonnene i disse indexene.

 

En løsning som kanskje vil fungere er å opprette to indexer. En med kolonnene groupid og timestamp, og en med kun kolonnen timestamp.

Lenke til kommentar
Er noen av disse kolonnene med i en primary key? Inngår noen av disse kolonnene i en index? Isåfall hvilke kolonner og hvilken rekkefølge er kolonnene i disse indexene.

 

En løsning som kanskje vil fungere er å opprette to indexer. En med kolonnene groupid og timestamp, og en med kun kolonnen timestamp.

 

Forsøker løsningen du foreslo, i mellomtiden kan du se for deg selv hvordan det er satt opp i øyeblikket:

 

post-192085-1243537193_thumb.jpg

 

Progid er den samme jeg for enkelthets skyld kalte groupid i forrige post.

Endret av RadiantHeart
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...