Hallo Zusammen,
ich habe aktuelle das Problem, dass sich die Laufzeit einer Statistikberechnung von aktuell ca. 23 Min, durch die Erstellung eines SQL-Triggers für Insert und eines SQL-Triggers für den Update, auf die Ergebnistabelle rechnerisch, auf einen Tag verlängert.

Also die Statistikberechnung erzeugt im ersten Schritt eine Liste aller Vorgänge, die relevant sind (ca. 6,7 Mio Datensätze). Für diesen ersten Schritt benötigt das System derzeit ca. 12 Minuten.
Das macht Rechnerisch ca. 550.000 Sätze in der Minute. Die Tabelle in der die Sätze geschrieben werden ist eine DDS beschriebene Datei.
Die Tabelle in die ich die Sätze duplizieren möchte ist per SQL create erzeugt.
In der alten Dateibeschreibung sind 2 Datumfelder und 2 Uhrzeiten in nummerischer Form zu speichern.
Im ersten Schritt werden die Daten aber nicht gesetzt. Somit ist das jeweilige Datum und die Uhrzeit = 0.
In der neuen Tabelle setze ich das Datum mit einer Benutzerdefinierten Funktion in einen Timestamp um, aber nur Wenn das Datum nicht 0 ist (case when).
Der Insert mit einem Select auf das entgültige Ergebnis dauert mit RUNSQLSTM ca. 17 Minuten.
Soweit so gut:
Jetzt habe ich einen einfachen Insert-Trigger und einen Update-Trigger, der mit begin atomic und IF old <> new geänderte Sätze in der neuen Tabelle aktualisiert, gebaut.

Nach der Aktivierung der Trigger musste ich den Job abbrechen und die Trigger deaktivieren, da schon im ersten Schritt (also nur Insert der Schlüsselfelder, ohne Datum und Uhrzeit) nach einer halben Stunde nur knapp 500.000 Sätze geschrieben wurden.
Das Programm, das die alte Datei befüllt ist ein RPG-Programm, dass noch mit GOTO's arbeitet aber, das RPG-Programm sollte doch damit nichts zu tun haben, da die Trigger ja an der Datei hängen, oder?