При использовании EXISTS с подзапросом решение подзапроса должно быть быстрее (по сравнению с внешним соединением и проверкой на NULL), потому что «оценка» подзапроса завершается, как только возвращается первая строка .
По моему опыту, в большинстве случаев оптимизатор запросов выбирает один и тот же план, так что между ними нет разницы в производительности (по крайней мере, для Oracle и PostgreSQL)