Базы данных / SQL junior
Подзапрос vs JOIN vs CTE — когда что?
Ответ
Подзапрос: в WHERE для фильтрации (WHERE id IN (SELECT ...)). JOIN: для объединения данных из нескольких таблиц. CTE (WITH ... AS): для читаемости сложных запросов и рекурсии; сам по себе запрос не ускоряет.
Разбор: Подзапрос удобен для фильтрации (WHERE id IN (SELECT...)), JOIN — для объединения данных из нескольких таблиц, CTE (WITH...AS) — для читаемости и рекурсии; в первом дистракторе назначения JOIN и подзапроса перепутаны. CTE не гарантированно материализуется и сам по себе не ускоряет запрос (в современных СУБД часто инлайнится). Коррелированный подзапрос выполняется для каждой строки внешнего запроса, поэтому он не «всегда эффективнее JOIN», а нередко медленнее.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.