FAQ |
Kalender |
|
![]() |
#1 | ||
|
|||
Medlem
|
Hej!
Har lite problem med prestanda eller egentligen en allmän fundering kring denna typ av mysql frågor. Nedanstående ska helt enkelt ta ut de 10 som senast har loggat in på ett system (tabellen inloggs ) och visa upp deras medlemsnamn som finns i en annan tabell (member) SELECT inloggs.*, member.user_name FROM inloggs, member WHERE inloggs.user_id=member.user_id ORDER BY inloggs.id DESC LIMIT 0,10 Denna tar ca 0.7 sekunder att exekvera,vilket i och för sig är godtagbart just nu men då innehåller inloggstabellen 120000 rader och members ca 6000 rader, inte speciellt mycket alltså.... (inloggs.user_id och member.user_id är indexerade, inloggs.id är auto increment) Denna fråga går att optimera så här: SELECT inloggs.*, member.user_name FROM inloggs, member WHERE inloggs.user_id=member.user_id AND inloggs.id > 119990 ORDER BY inloggs.id DESC LIMIT 0,10 Alltså man hämtar först ut max värde för id och drar ifrån 10 , men det känns lite omständigt att behöva en extra query för detta..hur kan man annars göra ..någon som vet..? |
||
![]() |
![]() |
Svara |
|
|