Запросы такого вида (с вложенным селект для оператора IN) хорошо работают, когда подзапрос возвращает небольшое количество записей (10 - 100). В Oracle я не сталкивался с подобным ограничением, но все же
в Вашем случае порядок 10^5, и стоит попробовать другой вариант:
select * from messages m
where not exists (select * from old_messages o where o.id = m.id)
или вот так
select m.* from messages m left outer join old_messages o on (o.id = m.id)
where o.id is null
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
в Вашем случае порядок 10^5, и стоит попробовать другой вариант:
или вот так