[sql] EXISTS 서브쿼리

SQL에서 EXISTS 서브쿼리는 다른 쿼리의 결과 집합에 값이 존재하는지 여부를 확인하는데 사용됩니다. 이러한 형태의 서브쿼리를 사용하면 특정 조건이 충족될 때만 외부 쿼리를 실행할 수 있습니다.

EXISTS와 NOT EXISTS

EXISTS는 서브쿼리에 한 개 이상의 행이 존재하는 경우에 참을 반환하며, NOT EXISTS행이 존재하지 않는 경우 참을 반환합니다.

예를 들어, 아래의 SQL 쿼리는 ‘주문된 제품이 있는 경우 고객의 이름을 반환’합니다.

SELECT customer_name
FROM customers
WHERE EXISTS (SELECT 1 FROM orders WHERE orders.customer_id = customers.customer_id);

이 쿼리는 customers 테이블의 각 고객에 대해 서브쿼리를 실행하고, 해당 고객의 customer_idorders 테이블의 customer_id와 일치하는 경우 해당 고객의 이름을 반환합니다.

EXISTS 서브쿼리 사용 시 주의사항

EXISTS 서브쿼리를 사용할 때, 개발자는 결과 집합의 크기에 유의해야 합니다. 서브쿼리에 너무 많은 행이 반환되면 성능이 저하될 수 있으므로 적절한 인덱스를 생성하는 것이 중요합니다.

또한 EXISTS 서브쿼리는 세부 쿼리로 분리하여 가독성을 높이는 것이 좋습니다.

이를 통해 쿼리를 이해하기 쉽고 유지보수하기 쉬운 코드를 작성할 수 있습니다.

요약

EXISTS 서브쿼리는 특정 조건을 만족하는 경우에만 외부 쿼리를 실행하도록 하는데 활용됩니다. 올바르게 활용하면 성능을 최적화하고, 가독성 높은 코드를 작성하는데 도움을 줄 수 있습니다.

참고 자료