robertroth: Konsolidierung von Zeiträumen, Anzahl Belegungen

Beitrag lesen

Liebe Mitdenker, liebe Wissende, liebe Neugierige,

Tach!

INSERT INTO leitungen(zeit, anzahl)
SELECT start, @akt:=@akt + action
FROM telefonate 
order by start

Das "order by start" macht mir noch Bauchschmerzen, weil order eigentlich die Ergebnismenge sortiert. Wir wollen hier aber eine sortierte Ausgangsmenge haben. Die müssen wir vermutlich vorher mit einem Subquery erzeugen?

Was ist der Unterschied zwischen Ergebnis und Ausgabe?

Generell gilt, dass die Daten in der Tabelle unsortiert vorliegen. Man kann zwar mit ALTER TABLE eine physische Sortierung veranlassen, aber die ist nur bis zu den nächsten Einfügungen oder Löschungen vorhanden. Außerdem betrifft das nicht die InnoDB-Tabellen, die haben ein Eigenleben, was die Reihenfolge anbelangt.

Kann sein, dass InniDB das wirklich besser macht.

Jedenfalls hatte ich bei MyISAM öfter mal das Problem, dass man mit Benutzervariablen in der oben gezeigten Form nur auf eine bereits vorsortierte Menge arbeiten durfte, sonst gab es gelegentlich mal Fehler. Die Sortierung wurde erst nach den Zuweisungen im Select vorgenommen. Sie muss aber vor den Zuweisungen stattfinden, gleich nach oder oprimiert sogar ggf. sogaar noch vor der Filterung der Daten.

Allerdings sollte die Reihenfolge der Abarbeitung spätestens durch den 1:1-Index klar sein.

  • Index -> Sortierung
  • Filterung (hier nicht vorhanden)
  • Datenbuffer beschaffen (Daten aus dem Satz holen)
  • Datenmanipulation
  • Ausgabemenge erzeugen

So würde ich mir das jedenfalls vorstellen.

Es klappt ja auch alles. Ich habe gestern noch ein paar Hardcore-Tests damit angestellt. Und Du beruhigst mich auch.

Ich denke daher, dass vier einfache Statements hintereinander abgefahren hier wesentlich schneller sind, als ein Monsterstatement, wie es baeckerman83 zuerst versucht hat - wenn man das überhaupt hinbekommt.

Außerdem kann man die Statements ja auch in einer stored Routine zusammenfassen, so dass am Ende doch nur ein Funktionsaufruf übrig bleibt.

Spirituelle Grüße
Euer Robert
robert.r@online.de

--
Möge der wahre Forumsgeist ewig leben!