Я за вариант 2. если нет варианта 3.
Вариант 1 может иногда не работать из-за попадания на лимиты:
можно попасть на 2 лимита
1. превышение максимальной длины запроса
2. превышение максимального количества параметров в IN. да, там тоже есть ограничения
Ограничения есть не только в мускуле, но и в оракле, постргессе и других БД.
Вариант 2 ещё к тому же и тормознутый, если у нас много записей во внешнем запросе.
Простые запросы будут работать быстрее:
select * from table1,table2 where условия
или запрос через
join
select * from table1 join table2 on условие where условия
какие из них, будет работать быстрее смотрите сами. Настройки БД подпиливаются под данные и под запросы, которые будут исполняться на этих данных.