Eddie: Simple MySQL-Abfrage beschleunigen?

Beitrag lesen

Hallo allerseits,

ich habe ein Problem mit einer Datenbankabfrage, die einfach zu lange dauert - nämlich 6 Sekunden. Und leider habe ich keine wirkliche Idee, wie ich das beschleunigen kann :-(

Folgende Abfrage soll die Tabelle photos (mit 600.000 Einträgen) mit der Tabelle Artikel (mit 10.000 Einträgen) verknüpfen und einfach nur Photos zählen, die den beiden kommentierten Bedingungen genügen.

SELECT count(*) as numberOfPhotos  
FROM photo p, article a  
WHERE  
# Bedingung 1: deutsche Sprache  
a.language = 'de'  
# Bedingung 2: veröffentlichter Artikel  
AND a.status = 'published'  
AND p.fk_article = a.id;

Das Ergebnis dieser Abfrage ist 550.000 - und das braucht 6 Sekunden. Wenn ich die beiden Bedingungen testweise rausnehme, sind's nur noch 1,5 Sekunden.

Indizes sind meiner Meinung nach korrekt(?) gesetzt, haben jedoch für beide Bedingungspalten eine Kardinalität von 2 bzw. 3. Vielleicht liegt es ja daran?

Ansonsten wäre ich Euch sehr dankbar für jeden Hinweis, wie ich diese Abfrage ein wenig optimieren kann.

Eddie