유형 2 데이터의 데이터베이스 테이블이 있는데 마지막으로 동기화 한 이후로 삭제 된 레코드를 찾고 싶습니다. date_from
및 date_to
개의 열이 있고 원시 데이터의 ID 열은 object_id
입니다. date_to<>null
은 현재 존재하지 않으므로 같은 object_id
과 date_to=null
을 가진 다른 레코드가 없으면 삭제 된 것입니다.유형 2 테이블에서 삭제 된 레코드를 효율적으로 찾습니다.
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);
하지만 분명히 그 터무니없이 비싼 것 :
나는 순진 구현이 같은 될 것이라고 생각합니다.명백한 효율적인 방법이 있습니까? 나는 거기에 (또는 오히려, 내가 상대적으로 몇 가지 삭제 된 레코드가 있다고 가정하고, RDBMS 이외의 계산을 수행해야한다고 생각한다.) 그러나 나는 단지 만약을 대비해 질문했다.
감사합니다.
그래, 나는 조인으로 서브 쿼리를 돌릴 수 있다는 것을 알았고 나는 총 EXPLAIN 중독자이다. 이것은 매우 직설적입니다. 여기에 많은 도움이된다면 date_to에 인덱스를 추가하는 것이 완전히 합리적으로 들립니다. 이것은 좋은 출발점입니다. – Ken