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

Python Junior Без компании
Сталкивался ли с Semi JOIN в PostgreSQL
Ответы
Semi JOIN в PostgreSQL — это не отдельный синтаксический оператор, а концепция, когда JOIN используется для фильтрации строк без дублирования. Он возвращает строки из первой таблицы, где есть совпадения во второй, но без объединения строк второй таблицы. **Пример с EXISTS (классический Semi JOIN):** ``` SELECT * FROM users u WHERE EXISTS ( SELECT 1 FROM orders o WHERE o.user_id = u.id ); ``` **Эквивалент с IN:** ``` SELECT * FROM users WHERE id IN (SELECT user_id FROM orders); ``` **Ключевые особенности:** - Не дублирует строкй при совпадениях (в отличие от обычного JOIN) - Оптимизатор часто преобразует IN/EXISTS в одинаковый план выполнения - EXISTS обычно эффективнее при большом подзапросе, IN — при малом списке значений