“비존재 검사(non-existence check) 패턴”은 SQL에서 어떤 테이블에는 존재하지만 다른 테이블에는 존재하지 않는 행을 찾는 패턴이다.

예를 들어:

이런 것을 찾을 때 사용하는 전형적인 기법이다.

1. 비존재 검사 패턴의 종류 (3가지)

가장 널리 쓰는 3가지는 아래다.

패턴 1: LEFT JOIN + IS NULL → anti-join

가장 흔한 방식.

SELECT t.*
FROM T t
LEFT JOIN U u ON u.userId = t.userId
WHERE u.userId IS NULL;

의미: T에는 있는데 U에 없는 행만 가져와라.

이게 흔히 “anti-join”이라고 부른다.


패턴 2: NOT EXISTS (추천되는 방식)

정확한 비존재 검사이며 의미적으로 안전하다.

SELECT t.*
FROM T t
WHERE NOT EXISTS (
    SELECT 1
    FROM U u
    WHERE u.userId = t.userId
);

대부분의 DB 옵티마이저는 이 패턴을 가장 잘 최적화한다.


패턴 3: NOT IN (비추천)