1). Ваш "SQL" больше похож на псевдокод
2). Эти запросы не эквивалентны ( почитайте внимательнее про LEFT JOIN )
3). Первый вариант быстрее ( при разумных допущениях ), второй - известный антипаттерн, применяемый начинающими программистами, которых напугали "медленными джойнами". На самом деле джойны - это именно то, что реляционные базы могут делать очень быстро и очень продвинуто.
Бенчмарк ( правильно приготовленный ) на реальных данных решает вопрос.
Я не знаю, может быть в yii2 есть какая-то специфика, связанная с обработкой данных именно внутри фреймворка, но если мы говорим только про базу, то тут вопросов быть не может - джойн быстрее.
Более того, запросы типа
select something from b where some_field in ( long_list_of_values )
в плохую погоду приводят к куче проблем типа постоянного линейного просмотра длинного списка в in clause, что, понятно, приводит к катастрофическому перфомансу.
См., например здесь https://dba.stackexchange.com/questions/91247/opti...
Pavel Denisov: Ох, не надейтесь! )
На самом деле запросов может быть куча, я просто привел пример, что подзапрос может работать быстрее, чем JOIN.
Это же абсолютный пример в вакууме.