# SQL-Abfragen optimieren



## PHP-Fan (11. Juni 2009)

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


```
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?


----------



## ronaldo84 (11. Juni 2009)

An deiner Abfrage kann man eigentlich nicht viel optimieren. Interessanter wäre der Aufbau der Tabelle. Arbeitest du mit einem Index? Siehe dazu:
http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html


----------



## PHP-Fan (11. Juni 2009)

Index hat SQL automatisch vergeben. Soll ich mal einen Screenshot machen?


----------



## Miguel77 (11. Juni 2009)

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.


----------



## ronaldo84 (11. Juni 2009)

Poste am besten einfach mal dein Tabellendesign.


----------

