SQL WHERE Bedingung



  • Hi!

    Hier sind doch bestimmt einige Leute die sich mit SQL auskennen. Gibt es eine maximale Anzahl von Bedingungen in einer WHERE Klausel???

    Also Bedingung AND Bedingung. Wieviele Bedingungen können hier stehen??

    Gruß Friggel



  • afaik theoretisch nicht.
    allerdings steigt dir irgendwann der interpreter wegen eines zu langem strings aus und du wirst vorher definitiv wenigstens 4 tippfehler machen 😉



  • Es gibt zumindest bei MySQL eine MAX Anzahl an Socketbytes.
    SO einen langen Query kann man aber garnicht erstellen das dieser Überschritten wird. Wenn ja dann hat man die Normalisierung, etc nicht gemacht.



  • Wenn ja dann hat man die Normalisierung, etc nicht gemacht.

    nein, hat in der regel nichts damit zutun. man kann sich ja z.b. entscheiden, einen 13-tabellen join über eine sauber normalisierte (bis stufe 3, 4-6 bringt meist mehr aufwand im handling) datenbank zu machen (haben wir neulich gemusst) und dann pro tabelle mehrere auswahlkriterien anzugeben. dann hätte man bei 3 kriterien pro tabelle 39 bedingungen + 12 verknüpfungsbedingungen des joins =51 bedingungen. ok, kommt in der realität eher selten vor, aber kann passieren.

    ja, und die maximale grösse des puffers für zu sendende abfragen an den mysql-server ist 16mb. das ist wirklich mehr als man jemals braucht. (wenn doch müsste diese "abfrage" mehrere bücher füllen 😃 )
    😉



  • tenim schrieb:

    Wenn ja dann hat man die Normalisierung, etc nicht gemacht.

    nein, hat in der regel nichts damit zutun. man kann sich ja z.b. entscheiden, einen 13-tabellen join über eine sauber normalisierte (bis stufe 3, 4-6 bringt meist mehr aufwand im handling) datenbank zu machen (haben wir neulich gemusst) und dann pro tabelle mehrere auswahlkriterien anzugeben. dann hätte man bei 3 kriterien pro tabelle 39 bedingungen + 12 verknüpfungsbedingungen des joins =51 bedingungen. ok, kommt in der realität eher selten vor, aber kann passieren.

    ja, und die maximale grösse des puffers für zu sendende abfragen an den mysql-server ist 16mb. das ist wirklich mehr als man jemals braucht. (wenn doch müsste diese "abfrage" mehrere bücher füllen 😃 )
    😉

    Das ist eh nicht so besonders zu empfehlen, da es durch die vielen joins ziemlich laaaahm wird. Bei Oracle würde ich dann nen Cursor benutzen. Oder wenn es eh von einem Programm geregelt wird die Abfragen in kleine unterabfragen aufteilen: Cursor beschleunigt -> auswertung viel schneller fertig.

    P.S.: Mach da doch mal nen Group by und nen Order mit rein, und dann fährste ne Woche in Urlaub *ggg*


Anmelden zum Antworten