Tendría que proporcionar los planes de explicación para evaluar mejor por qué uno funciona mejor que el otro. Pero, en general, puede obtener mejores resultados, o al menos, más predecibles para este tipo de consulta cambiando el IN
condición a EXISTS
condición en su lugar:
select *
from data_table t1
where exists (select null
from id_table t2
where t2.oid = t1.oid
and (other conditions))