SQL에서 EXISTS는 서브쿼리의 결과에 조건을 만족하는 행이 하나라도 존재하는지 여부만 판단합니다. 첫 번째로 조건을 만족하는 행을 찾으면 즉시 TRUE를 반환하고, 나머지 행은 검사하지 않습니다.
SELECT *
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE o.customer_id = c.customer_id
);
SELECT c.*, o.*
FROM customers c
JOIN orders o ON o.customer_id = c.customer_id;
고객별 모든 주문 데이터를 조회할 수 있음
조건을 만족하는 모든 행을 반환
SELECT *
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
);
EXISTS는 성능상 유리할 수 있음 (특히 인덱스가 있는 경우)
다만, 결과 자체가 필요한 경우에는 JOIN 등으로 전환해야 함
항상 실행 계획(Explain Plan)을 통해 성능 확인 권장