Vinzenz Mai: Kann ich diese MySQL-Anfrage optimieren?

Beitrag lesen

Hallo globe,

statt der ORs hab ich das auf nen IN (..) umgeschrieben... IN () verarbeitet MySQL offenbar schneller, als mehrere ORs - ORs sind allgemein böhse und sind zu vermeiden, wo es geht...

und genau aus diesem Grunde würde ich das zentrale OR durch UNION ersetzen.
Woher soll der Optimierer wissen, dass er im ersten Abschnitt alle Kombinationen mit rel2 vernachlässigen kann (es ist ja nirgendwo verboten) und im zweiten Abschnitt alle Kombinationen mit rel1 (genausowenig verboten). Infolgedessen gehe ich davon aus, dass wie ich bereits geschrieben habe tatsächlich alle möglichen ca. 2 Milliarden Kombinationen durchprobiert werden, ob die Bedingung(en) passen.

Voraussetzung für meine Lösung ist MySQL >= 4.0.0. Die enormen Unterschiede in der Funktionalität zwischen den einzelnen MySQL-Versionen erfordern es, dass man in vielen Fällen die Versionsnummer kennen muss, um zielgerichtet helfen zu können.

Freundliche Grüße

Vinzenz