I've got a database table of type-2 data, and I want to find records that were deleted since I last synced with it. It's got date_from
and date_to
columns, and the raw data has an ID column object_id
. date_to<>null
means it doesn't exist now, so if there's no other record with the same object_id
and date_to=null
, then it's been deleted.
I believe a naive implementation would be something like:
select * from data_t2 a
where a.date_to > last_sync_date and a.date_to < current_date()
and not exists (select * from data_t2 b
where b.date_to is null and b.object_id = a.object_id);
but obviously that's going to be ridiculously expensive.
Is there an obvious more efficient way that I'm missing? I suspect there isn't (or rather, that I should assume there are relatively few deleted records, and do some of the computation outside the RDBMS), but I figured I'd ask just in case.
Thanks!