Medlem
|
|
Reg.datum: Nov 2003
Inlägg: 214
|
|
Medlem
Reg.datum: Nov 2003
Inlägg: 214
|
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..?
|