[MySQL] where mit 1.600 'or' sehr langsam



  • Hi,

    folgendes Problem: Ich habe eine where-Klausel in der bis zu 1.600 'or' in einem Query benutzt werden können.

    Ich suche nur nach dem Primärschlüssel (varchar(32)).

    Das ist natürlich sehr langsam (bis zu 1 sekunde) und nicht akzeptabel. Weiß einer wie man so etwas optimieren kann?

    Primärschlüssel geht leider nicht mit unsigned integers, da es sich um md5 checksummen handelt, die als primärschlüssel benutzt werden müssen.



  • Hast du's mal mit IN versucht?

    where mein_schluessel in ('blah blah blah', 'Blah Laber sülz', ...)

    Ansonsten könntest du noch versuchen die 1600 zu Testenden Schlüssel in eine Temporäre Tabelle zu schmeissen und ein

    where mein_schluessel in (select schluessel from meine_temp_tabelle)

    versuchen.



  • frenki schrieb:

    Ansonsten könntest du noch versuchen die 1600 zu Testenden Schlüssel in eine Temporäre Tabelle zu schmeissen und ein
    where mein_schluessel in (select schluessel from meine_temp_tabelle)
    versuchen.

    temporärtabelle gefällt mir. aber dann gefiele mir einfaches joinen noch besser statt subquery.



  • Ich würde mir mal überlegen ob ich nicht was am Design verbaut habe, wenn ich bis zu 1600 OR-Klauseln habe...

    Wo kommt denn das vor?

    MfG SideWinder



  • Als Datenbank-Entwickler würde ich es gar nicht zulassen, das meine DB Statements mit 1600 OR-Klauseln akzeptiert 😮


Anmelden zum Antworten