Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] rollup extrem langsam

Einklappen

Neue Werbung 2019

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

  • [Erledigt] rollup extrem langsam

    Hallo zusammen

    Ich hab eine Tabelle mit ca. 100'000 Datensätzen und führe darauf eine SELECT...GROUP BY...WITH ROLLUP query aus. (MySQL 4.1)

    Ohne die Rollup-Option dauert die Query ca. 3 Sekunden, mit der Rollup-Optionen aber ca. 42 Sekunden!

    Ist das normal, dass das Rollup die Prozesszeit so stark verlängert? Oder gibt es allenfalls Optimierungsmöglichkeiten fürs Rollup?

    Andernfalls müsste ich die Rollup-Funktionalität im Skript selber programmieren.

    Gruss,
    Janosh

  • #2
    was sagt EXPLAIN dazu?

    Kommentar


    • #3
      Hi axo

      Explain sagte, dass auf der grössten Tabelle kein Index benützt werden könne, was ich nun korrigiert habe. Nun benötigt das ROLLUP "nur" noch ca. 14 Sekunden.
      Vielen Dank für den Tipp.

      Trotzdem sind natürlich 14 Sekunden immer noch viel, im Vergleich zu ca. 2 Sekunden ohne ROLLUP.

      Würde es etwas bringen, den gesamten EXPLAIN-Output hier zu posten?

      Gruss,
      Janosh

      Kommentar


      • #4
        habe gerade bemerkt, dass es immer noch 40 Sekunden dauert, wenn ich via Website abfrage. Die 14 Sekunden waren nur bei direktem Zugriff auf die DB via Frontend. Ich bin jetzt nicht sicher, warum das einen so grossen Unterschied machen kann. Die Messung bei der Webvariante ist in PHP gleich vor und nach dem query(), somit ist der Rest des Skripts nicht in der Zeitdauer drin.

        Gruss,
        Janosh

        Kommentar


        • #5
          du darfst nicht vergessen, dass ORDER BY sich ebenfalls negativ aufs ergebnis auswirkt. wahrscheinlich hast du im php-skript ein automatisches ORDER BY drin.

          Kommentar


          • #6
            Sorry, das mit den 40 Sekunden war falsch; auch via Website dauert die Abfrage mit Rollup nun 14 Sekunden.

            Ein zusätzliches ORDER BY hab ich nicht, da ich die Sortierung, welche durch das GROUP BY entsteht, übernehmen kann.

            Ich hab gerade bemerkt, dass diei ROLLUP-Funktion auch die Aggregatsfunktion berücksichtigt, d.h. wenn ich im Select-Teil SUM() benütze, dann sind die Zwischentotale auch mit SUM berechnet. Wenn ich aber z.B. AVG() verwende, dann ist auch das Zwischentotal ein Durchschnitt.

            Da ich im Select-Teil auch noch IF's habe, könnte es sein, dass durch das ROLLUP all diese Prüfungen mehrfach ausgeführt werden. Das könnte ein Grund sein, warum das ROLLUP die Abfragezeit so extrem von 2 auf 14 Sekunden ( + 700%) verlängert.

            Was meinst du dazu?

            Gruss,
            Janosh

            Kommentar

            Lädt...
            X