MySQL Abfrage Optimieren

dr_Alex

Erfahrenes Mitglied
Hallo,

also ich habe diese SQL-Abfrage:

Code:
SELECT p . * , v.picture_date, u . *
FROM top_picture AS p
LEFT JOIN top_picture_voters AS v ON p.picture_id = v.picture_id
LEFT JOIN top_user AS u ON u.user_id = p.user_id
WHERE p.user_id !=139
ORDER BY RAND( )
LIMIT 1

Das liefert mir ein zufälliges Bild. Es geht soweit nur das Problem liegt in der Dauer:

Zeige Datensätze 0 - 0 (1 insgesamt, die Abfrage dauerte 4.3265 sek)

wie könnte man das optimieren?

Danke vorraus.

gruss,
Alex
 
Minimale Verbesserung erhältst Du (theoretisch), wenn Du in der Projektion nicht mit * arbeitest, sondern die Felder explizit auswählst.

Außerdem solltest Du durch weglassen herausfinden, welcher der Joins Dir das Genick bricht. Ggf. ist hier eine zweite Abfrage mit entsprechend spezifischer Where-Klausel zum herausfinden der Werte schneller.

Gruß hpvw
 
Zurück