1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Doppeltes group by

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von woody_woodpecke, 28.07.08.

  1. woody_woodpecke

    woody_woodpecke Grahams Jubiläumsapfel

    Dabei seit:
    20.11.06
    Beiträge:
    106
    Hi,
    ich hab einen Datenbank in der Logeinträge mit den folgenden Feldern gespeichert werden:
    ID|Seriennummer|Artikelnummer|Zeit

    Jetzt brauche ich alle Artikelnummern der letzten Einträge aller Seriennummer.

    Ich will also zuerst nach Seriennummern welche nach Zeit sortiert sind gruppieren und das Ergebniss soll dann nach Artikelnummern gruppiert werden und nach Artikelnummern sortiert werden.

    Bisher habe ich es mit folgendem subselect gelöst:
    select Artikelnummer from (select Artikelnummer, Zeit from Log group by Seriennummer order by Zeit) group by Artikelnummer order by Artikelnummer;

    Da ich aber über 100000 Einträge hab und es bald 1 Mio werden, dauert dieses Select jetzt schon über 5 Sekunden, was für meine Webapplikation zu lange ist.

    Weiß jemand noch eine andere Möglichkeit, wie ich das schneller lösen kann?

    mfg Stefan
     
  2. maarten

    maarten Empire

    Dabei seit:
    14.10.07
    Beiträge:
    88
    mir wird nicht ganz klar was du insgesammt bezwecken willst, was sind das für Seriennumemrn, steckt da eine ArtikelID nicht irgendwie mit drin? Ich wuerde die Tabelle schon irgendwie aufspaten, aber mir ist nicht klar was du genau brauchst. Versuche mal deine Anfrage etwas mehr "High-Level" zu beschreiben.
    Gruss, Maarten
     
  3. duderino

    duderino Goldparmäne

    Dabei seit:
    26.01.06
    Beiträge:
    556
    Naja, du kannst die Einträge ganz simpel auf ein paar Seiten aufteilen. Sagen wir mal 1000 Einträge pro Seite. Du weiß ja sicher wie das mit LIMIT 0,1000 usw. funkioniert.

    duderino
     
  4. ma.buso

    ma.buso Châtaigne du Léman

    Dabei seit:
    16.04.05
    Beiträge:
    824
  5. PressureDrop

    PressureDrop Jamba

    Dabei seit:
    07.12.06
    Beiträge:
    58
    Na ich würde mal ein paar Indizes erzeugen...eine Million Einträge ist doch noch nischt...
    Übrigens ordnet in manchen DB`s der GROUP BY auch noch mal mit. Oder Du sortierst rückwärts und lässt Dir dann nur die ersten 100 Zeilen geben...
     
  6. Toddy

    Toddy Wohlschmecker aus Vierlanden

    Dabei seit:
    10.05.04
    Beiträge:
    240
    Sehe ich genauso, 5 Sekunden für 100.000 Einträge, da kann was mit dem Index nicht stimmen, sofern nicht jede Zeile etliche MB an Daten beinhaltet (Was bei Serien- / Artikelnummer eher unwahrscheinlich ist) oder deine DB auf einem 386-er läuft...

    Falls viele Zugriffe auf die DB kommen könnte man das Ergebnis noch Zwischenspeichern.

    T.
     

Diese Seite empfehlen