У меня есть таблица базы данных типа 2, и я хочу найти записи, которые были удалены с момента последней синхронизации с ней. Он имеет столбцы date_from
и date_to
, а необработанные данные имеют столбец идентификатора object_id
. date_to<>null
означает, что его сейчас не существует, поэтому, если нет другой записи с такими же object_id
и date_to=null
, то она была удалена.
Я считаю, что наивная реализация будет выглядеть примерно так:
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);
но, очевидно, это будет смехотворно дорого.
Есть ли очевидный, более эффективный способ, который я пропускаю? Я подозреваю, что нет (или, скорее, я должен предположить, что удаленных записей относительно немного, и выполнить некоторые вычисления вне СУБД), но я решил, что на всякий случай задам вопрос.
Спасибо!