Wie wäre es mit einem kleinen Umweg (ungetestet)?
Es hat geklappt damit die Werte in die NOT IN Abfrage zu bekommen. Die Laufzeit der Abfrage lag dann aber im Minutenbereich => nicht praktikabel
Ich hatte bewusst verschwiegen dass es sich um ca. 1 Mio Daten handelt (nur drei Felder). Ich hatte den Aufschrei vermeiden wollen.
Es ging und geht mir aber auch um die Technik selber.
Ob es so etwas bei UniDac auch gibt, weiß ich nicht. Es wäre allerdings enttäuschend und für uns ein NoGo, wenn nicht. Dazu müsste aber jemand anderes etwas sagen, der UniDac benutzt. Da gibt es ja im Forum einige, die das gegenüber FireDAC (was wir benutzen) in den Himmel loben. Wo seid ihr?
Wie würde die Abfrage in FireDac denn aussehen? Einfach
UniQuery2.SQL.Text := 'Select * from Table where ID NOT IN (select ID from UniQuery1)'
kann es ja nicht sein. Woher soll das
SQL UniQuery1 kennen? Letztlich wird aber das Zeitverhalten ähnlich wie zuvor sein.
Einen solchen Zeitstempel kann ich unabhängig von der Datenquelle (Stichwort Replikation) mit einem Trigger erzeugen und der Zieltabelle mitgeben.
Wie soll das gehen? Die Tabelle hat einen Zeitstempel. Da der aber vom Server abhängig ist kann es zu Zeitversätzen kommen.
Ich weiß, ist keine wirkliche Hilfe in diesem Fall, aber in Interbase würde man das mit
Change Views lösen. Die werden auch von FireDAC direkt unterstützt.
Da muss ich noch mal schauen ob es sowas bei UniDac gibt. Als ich es vor Jahren mal angefragt hatte, ging es nicht
Danke für die Feedbacks, auch wenn ich noch nicht die richtige Lösung habe.
Vielleicht bleib ich doch dabei, dass ich mir im zweiten
Query alle Daten älter 24h lade und dann Satz für Satz vergleiche. Ich hatte gehofft es gibt einen besseren Weg.