Имеются две таблицы (T1 и T2). Таблицы находятся в разных базах и на разных серверах. Данные из T1 синхронизируются с T2. Процесс синхронизации простой, из T2 берется дата последней записи, из T1 извлекаются данные обновленные после этой даты, потом вставляются/обновляются в T2.
Как бы реализовать удаление данных, которых нет в T1? Записей много, несколько миллионов. Операцию надо производить регулярно. У таблиц есть общее поле ID.
Самый просто вариант это перебрать все записи и вычислить пропущенные ID, но вот как сделать это с минимальными накладными расходами?
UPD: Структуры таблиц разные, данные используются в двух совершенно разных проектах. Репликация тут не пойдет. Скажем сервер где T2 работает как парсер и из T1 может только читать. T1 же о T2 вообще ничего не знает.
UPD2:
Пока что только дошел вот до такого запроса:
SET @counter=0;
SELECT
ID,
IF(@counter+1 != ID, CONCAT(@counter+1, '-', ID-1), NULL) AS missing,
@counter:=ID
FROM T1 ORDER BY ID;
Думаю как теперь извлечь не NULL данные, если бы была возможность записи то можно было бы создать временную таблицу, но права есть только на чтение. Еще минус в том что полученные missing надо парсить и делать из них диапазон.