Vinzenz Mai: Kann ich diese MySQL-Anfrage optimieren?

Beitrag lesen

Hallo Ilja,

... scheinen aber nur bestimmte datensätze der tabelle c und re1, bzw. rel2 miteinander zu verknüpfen. insofern kann es sich nicht um ein kartesiches produkt handeln.

in diesem Falle doch, weil die beiden einschränkenden Verknüpfungen über ODER miteinander verknüpft sind, nicht mit UND. Ich denke nicht, dass hier der Optimierer ohne Nachhilfe etwas ausrichtet. Genau aus diesem Grund empfehle ich die UNION, da kann dieses Problem von vornherein nicht existieren.

Bei meinen Ausführungen hat sich übrigens ein (Copy&Paste-) Fehler eingeschlichen. Bei der zweiten Abfrage muss die WHERE-Bedingung selbstverständlich

WHERE rel2.catID = 6 lauten und nicht rel1.catID.

Du gibst mir jedoch recht, dass der Einsatz von UNION das Performanceproblem dieser Abfrage beheben sollte. Welche MySQL-Version Eddie verwendet, konnte ich trotz intensiver Recherche nicht herausfinden. Im Februar 2004 war es jedoch zumindest eine Version, die Subselects nicht unterstützt.

Freundliche Grüße

Vinzenz