Hallo,
ich soll für eine unveränderbare Fremdsoftware, die an dieser Stelle keine Protokolierung hat, Verändeungsdaten liefern, wobei Veränderungen auch 2 Jahre Rückwirkend noch passieren können.
Mein Plan:
"Heute" eine Kopie der betreffenden Daten speichern und diese mit der Kopie der Daten von "Gestern" vergleichen, ob sich bei einem Datensatz etwas geändert hat. Das erstellen der Kopien läuft ca. 5 Minuten, womit ich leben kann, aber mein Vergleich läuft super lange, bei ca. 300 Tsd. Datensätzen.
Aufbau der "Kopie"-Tabellen:
FirmenNummer
Abteilungsnummer
PersonenNummer
Kennzeichen (varchar)
Tag (datum)
Dauer (integer)
Das
SQL-Statement für den Vergleich:
SQL-Code:
Select
Heute.FirmenNummer, Heute.Abteilungsnummer, Heute.PersonenNummer,
Heute.Kennzeichen, Heute.Tag, Heute.Dauer
From Heute
Left Join Gestern
On Heute.FirmenNummer=Gestern.FirmenNummer And Heute.Abteilungsnummer=Gestern.Abteilungsnummer
And Heute.PersonenNummer=Gestern.PersonenNummer And Heute.Kennzeichen=Gestern.Kennzeichen
And Heute.Tag=Gestern.Tag And Heute.Dauer=Gestern.Dauer
Where
Gestern.FirmenNummer is NULL
Fragen nun:
Kann man das Beschleunigen durch Indizies? Wie? Worauf?
Oder stellt man die Abfrage anderweitig um, damit Sie schneller wird? Vielleicht irgendwas mit Exists?