Die Kombination von JOIN und DISTINCT legt die Vermutung nahe, dass Du in Wirklichkeit eher Subselects einsetzen willst. Natürlich ist es eine gute Idee, EXPLAIN zu befragen, nachdem Du die Abfrage erfolgreich umgebaut hast, um herauszufinden, welche Version performanter ist.
Hi Vinzenz und alle anderen,
ich wüßte mal gerne, warum ausgerechnet diese Abfrage solch ein Problem macht. Ich habe unzählige JOINS, die ich für komplizierter halte.
Also gut, was mache ich?
Ich habe eine Tabelle mit Adressdaten und eine, in die ich lediglich dann etwas eintrage, wenn die Adresse ein bestimmtes Kriterium erfüllt. Dann allerdings mit zusätzlichen Daten. Beide Tabellen verbindet die AdressID.
Tab1:
AdressID, Name, Strasse, Ort
Tab2:
ID, AdressID, Spalte1, Spalte2, Spalte3
Query:
select DISTINCT \n
r.AdressID,
r.Name,
r.Strasse,
r.Ort,
z.Spalte2
FROM tab1 r
LEFT JOIN tab2 z
ON r.AdressID = z.AdressID
WHERE
AdressID = 10 AND
COALESCE(z.Spalte2, 0) = 0
ORDER BY r.AdressID DESC
Ganz ehrlich, ich verstehe nicht, warum diese Abfrage so viele Kombinationen ergeben soll. I der entsprechenden Tabelle sind ca. 4000 Einträge in der Adress-Tabelle und 2000 in der tab2.
Wer erklärt mir, warum das für mysql ein Problem ist und wie ich es umgehe?
Bernd