Vous auriez à fournir les plans d'explication pour mieux évaluer pourquoi l'un est plus performant que l'autre. Mais, en général, vous pouvez obtenir de meilleurs résultats, ou du moins, des résultats plus prévisibles pour ce type de requête en modifiant le IN
condition à un EXISTS
condition à la place :
select *
from data_table t1
where exists (select null
from id_table t2
where t2.oid = t1.oid
and (other conditions))