Ankündigung

Einklappen
Keine Ankündigung bisher.

Große SQL-Abfragen falsch berechnet / beim zweiten Mal ok

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Große SQL-Abfragen falsch berechnet / beim zweiten Mal ok

    Hi,

    ich hab ein recht ungewöhnliches Problem, die Ursache inzwischen gefunden, aber keine Lösung parat. Vielleicht weiß hier ja jemand Rat.

    Ich hab einen Webserver mit Apache2 und PHP 5 und einen Datenbankserver mit MySQL 5.0.15.

    Wenn ich eine große SQL-Abfrage an den SQL_Server schicke (ca. 5 kB), bekomme ich bei einigen JOINs kein Ergebnis. Schicke ich allerdings unmittelbar danach dieselbe (statische) Abfrage noch einmal an den Server, funktioniert sie und liefert die dem JOIN entsprechenden Verknüpfungen.

    Sprich:

    Das geht nicht:
    Code:
    $Result = mysql_query($SQL);
    Das geht:
    Code:
    $Result = mysql_query($SQL);
    if (strlen($SQL) > 3000)
    {
      $Result = mysql_query($SQL);
    }
    Ich bin verwirrt. Ist das eventuell ein Problem dieser MySQL-Version oder ein fehlendes Flag für lange Queries beim Verbindungsaufbau oder ein Fehler im MySQL-Query-Cache?

    Gruß, Timo.


  • #2
    autsch.
    bist du ganz sicher, dass du wirklich eine 3000 zeichen lange db-abfrage BRAUCHST? ich glaube einfach nur, dass bereits der SQL-ausdruck kacke gemacht ist.

    Kommentar


    • #3
      Ich brauche zur Darstellung einer Seite Informationen aus vielen Tabellen. Ich könnte theoretisch auch 20 kleine Abfragen machen, bin aber der Ansicht, dass eine große Abfrage das Ganze effizienter löst. Und ich hab mich in den letzten 5 Jahren sehr intensiv mit MySQL beschäftigt
      Indizes sind alle korrekt gesetzt und die Abfrage ist auch unter Last in weniger als 0,1 Sekunde durch. Aber ich muss sie seit der Umstellung auf den neuen SQL-Server halt zwei Mal machen, damit sie ein korrektes Ergebnis liefert.

      Und ich hoffe, dass mir hier jemand sagen kann, ob das evtl. an der PHP-Version oder MySQL-version oder sonstwas liegt...

      Gruß, Timo

      P.S. Frohe Weihnachten

      Kommentar


      • #4
        Welche Fehlermeldung bekommst du denn bei der ersten Ausführung?

        Kommentar


        • #5
          Keine Fehlermeldung. Die Abfrage wird ausgeführt. Nur werden manche JOINS nicht ausgeführt, so dass ich in einigen Feldern NULL zurückbekomme, obwohl der JOIN ein Ergebnis hätte liefern müssen und beim zweiten Mal ja auch tut.

          Kommentar


          • #6
            bekomme ich bei einigen JOINs kein Ergebnis
            bin aber der Ansicht, dass eine große Abfrage das Ganze effizienter löst
            Wie definiertst du denn Effizienz? Aber hast wohl schon Erfahrung und Recht, aber wenns nicht geht, gehts nunmal nicht.
            Abgesehen davon gibts glaub keine Empfehlung diese Kombi (Apache 2, PHP5 und MySQL 5 zu benutzen), vielleicht ja aus gutem Grund, dass eben noch nicht alles ausgereift ist.

            Aber ohne konkrete Daten (Tabellen-Strukturen, Query selbst) können wir irgendwie auch nicht weiterhelfen, ich zumindest nicht.

            Kommentar


            • #7
              Wie ich schon sagte sind die Strukturen etc. völlig irrelevant.

              Das Problem ist allerdings gelöst. Seit einem Update von MySQL und PHP auf die jeweils neuesten Versionen funktioniert alles wieder normal.

              Waren wohl doch noch Bugs in der MySQL 5.0.15

              Kommentar

              Lädt...
              X