Wie Index setzen?

daryl

Mitglied
Hallo,

ich verwende auf meiner Seite die 3 Tabellen anzeigen, kategorien und bilder.

In anzeigen ist eine kategorien_ID.
In bilder ist eine anzeigen_ID.
Somit sind die 3 verknüpft.

Nun möchte ich mit folgender Abfrage die Spalten titel,text aus anzeigen sowie katname aus kategorien und die bildurl aus bilder:
Code:
SELECT anzeigen.ID,titel,text,katname,bildurl 
FROM anzeigen 
INNER JOIN kategorien ON anzeigen.kategorien_ID=kategorien.ID 
LEFT JOIN bilder ON anzeigen.ID=bilder.anzeigen_ID 
WHERE adminok='1' 
GROUP BY anzeigen.ID 
ORDER BY klicks DESC LIMIT 15
adminok ist ein ENUM-Feld in der Tabelle anzeigen mit 0 oder 1 - je nachdem, ob ich die ANzeige überprüft habe oder nicht. klicks ist ebenfalls in der Tabelle anzeigen (UNSIGNED INT).
Nun die Preisfrage: Wie sollte ich einen Index setzen, um diese Abfrage möglichst schnell hinzubekommen?
In Bilder ist ein Index auf anzeige_ID und in kategorien einer auf ID als PRIMARY. Diese beiden Tabellen sollten also denke ich mal in Ordnung sein. Aber der Index in der anzeigen bereitet mir Kopfzerbrechen.

Ich hab auch noch die Alternative den LEFT JOIN da rauszulassen, das beschleunigt die Anfrage von 5 auf 1,3 Sekunden, aber dann muss ich innerhalb der while-Schleife in PHP, in der ich die Datensätze durchgehe, nochmal für jeden Datensatz das Bild holen. Sicherlich geht das dann trotzdem schneller als 5 Sekunden, aber man sollte ja so etwas eigentlich vermeiden, in einer Schleife immer weider die gleiche Abfrage zu machen.
 
Zurück