Musiałbyś przedstawić plany wyjaśniania, aby lepiej ocenić, dlaczego jeden działa lepiej niż drugi. Ale ogólnie rzecz biorąc, możesz uzyskać lepsze lub przynajmniej bardziej przewidywalne wyniki dla tego typu zapytania, zmieniając IN warunek do EXISTS warunek zamiast tego:
select *
from data_table t1
where exists (select null
from id_table t2
where t2.oid = t1.oid
and (other conditions))