IN is often better if the results of the subquery are very small
When you write a query using the IN clause, you're telling the rule-based optimizer that you
want the inner query to drive the outer query.
When you write EXISTS in a where clause, you're telling the optimizer that you want the outer
query to be run first, using each value to fetch a value from the inner query.
In many cases, EXISTS is better because it requires you to specify a join condition, which can
invoke an INDEX scan. However, IN is often better if the results of the subquery are very
small. You usually want to run the query that returns the smaller set of results first.