I will try WHERE EXISTS.
The WHERE EXISTS clause works more like an indexed column because your search ends the instance a hit is made.
The IN clause as you correctly stated uses full table scan because it ensures that the entire table is searched.