Where Bedingungen mit verketteten Strings (Concat) verlangsamen die Laufzeit beträchtlich. Beispiel:
select distinct sgd_join_id,pbe_serial,pbe_von,pbe_bis,merkmal_bis+1,'Folgetag Endzeitpunkt ' quelle from tmp_zeitraum1 where merkmal_bis<pbe_bis and sgd_join_id::varchar(90)||pbe_serial::varchar(90)||merkmal_bis not in (select sgd_join_id::varchar(90)||pbe_serial::varchar(90)||merkmal_von from tmp_zeitraum1_copy);
Schneller geht es mit "exists", hier ein Beispiel für Postgres:
select distinct sgd_join_id,pbe_serial,pbe_von,pbe_bis,merkmal_bis+1,'Folgetag Endzeitpunkt ' quelle from tmp_zeitraum1 where merkmal_bis<pbe_bis and not exists (select 1 from tmp_zeitraum1_copy c where tmp_zeitraum1.sgd_join_id = c.sgd_join_id and tmp_zeitraum1.pbe_serial = c.pbe_serial and tmp_zeitraum1.merkmal_bis= c.merkmal_von)