Почему sql-оператор IN (в WHERE) плох с точки зрения оптимизации?
Использование оператора IN (значение0, значение1, значение2) никак не сказывается на производительности SQL-запроса. 
Чтобы запрос был менее ресурсозатратным, надо посмотреть результат EXPLAIN и расставить индексы.
Данный вопрос никак не решается в scope знаний об чистом языке SQL.
Здесь надо смотреть конкретную DBMS (Postgres/MySQL) и смотреть какой она выбрала план.

Более того. Знания о том как сработал Postgres нам не дают никакой подсказки о том как это сработает
в других системах.