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