SQL-Abfragen optimieren

PHP-Fan

Erfahrenes Mitglied
Hallo,

meine Webseite liegt auf einem Server. Die Seite ist auch (wenn die CPU-Auslastung nicht an die 90% kommt) relativ schnell allerdings hat der mysqld-Prozess sehr schwankende Werte. Meistens jedoch zwischen 70-90% wohingegen der Apache nur 1-2% benötigt. Das ganze schließt auf schlecht optimierte Datenbankabfragen. Daher meine Frage: Würde mir jemand helfen meine Webseite bzw. meine Datenbank-Abfragen zu beschleunigen und mir zeigen auf was ich achten sollte.

Ich poste mal gleich eine rein die relativ lange braucht (0.3452 sek). Andere Abfragen brauchen 0.0008s

PHP:
SELECT 
rls.id AS id, 
rls.titel AS titel, 
rls.org_titel AS org_titel, 
rls.gruppe AS gruppe, 
rls.klicks AS klicks, 
rls.votes AS votes, 
(rls.klicks + rls.klicks_2 + rls.klicks_3 + rls.klicks_4) AS downloads, 
lang.id AS sprache, 
details.text AS beschreibung, 
details.bild AS cover, 
details.fsk AS fsk, 
genre.genre AS genre, 
FROM filmtipps rls
INNER JOIN sprachen lang ON rls.sprache = lang.id
INNER JOIN games details ON details.id = rls.gameid
INNER JOIN genres genre ON genre.id = details.genre
ORDER BY klicks DESC
LIMIT 0 , 25

Hier liegt das Problem beim ORDER BY. Ohne ORDER BY braucht das ganze nur noch ~ 0.0047s. Mir fällt aber keine andere Lösung ein. Benötigt ihr noch etwas?
 
Verwechsel Index nicht mit Primary Key.

Primary Keys werden von MySQL automatisch vergeben, wenn es so definiert ist für das Feld.

Indizes muss man selbst setzen.

Und zwar bringt dies dann meistens Performancegewinn, besonders bei Querys mit Orderby Klauseln, da MySQL die Indizes intern pflegt.
 
Zurück