Встречается на собеседованиях • сегодня

Сталкивался ли с Semi JOIN в PostgreSQL

Semi JOIN в PostgreSQL — это не отдельный синтаксический оператор, а концепция, когда JOIN используется для фильтрации строк без дублирования. Он возвращает строки из первой таблицы, где есть совпадения во второй, но без объединения строк второй таблицы.

Пример с EXISTS (классический Semi JOIN):

sql
SELECT *
FROM users u
WHERE EXISTS (
    SELECT 1
FROM orders o
WHERE o.user_id = u.id
);

Эквивалент с IN:

sql
SELECT *
FROM users
WHERE id IN (SELECT user_id FROM orders);

Ключевые особенности:

  • Не дублирует строкй при совпадениях (в отличие от обычного JOIN)
  • Оптимизатор часто преобразует IN/EXISTS в одинаковый план выполнения
  • EXISTS обычно эффективнее при большом подзапросе, IN — при малом списке значений
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы