• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Doppeltes group by

woody_woodpecke

Grahams Jubiläumsapfel
Registriert
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
 

maarten

Empire
Registriert
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
 

duderino

Prinzenapfel
Registriert
26.01.06
Beiträge
555
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
 

PressureDrop

Tokyo Rose
Registriert
07.12.06
Beiträge
68
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...
 

Toddy

Wohlschmecker aus Vierlanden
Registriert
10.05.04
Beiträge
242
Na ich würde mal ein paar Indizes erzeugen...eine Million Einträge ist doch noch nischt...[...]

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.