Você teria que fornecer os planos de explicação para avaliar melhor por que um está tendo um desempenho melhor que o outro. Mas, em geral, você pode obter resultados melhores ou, pelo menos, mais previsíveis para esse tipo de consulta alterando o
IN
condição para um EXISTS
condição em vez disso:select *
from data_table t1
where exists (select null
from id_table t2
where t2.oid = t1.oid
and (other conditions))