Day 47 · 5/5
🌿 중급 DB

서브쿼리가 뭔가요?

쉽게 이해하기

요리할 때 '양파를 먼저 볶은 다음, 그 결과물에 고기를 넣는다'처럼 단계적으로 작업하는 것과 같습니다. 서브쿼리는 먼저 안쪽 쿼리를 실행해서 결과를 얻은 후, 그 결과를 바깥쪽 쿼리에서 사용하는 방식이에요.

핵심 정리

SQL 쿼리 안에 또 다른 쿼리를 넣어서 실행하는 방식으로, 복잡한 조건을 단계적으로 처리합니다.

자세히 알아보기

서브쿼리(Subquery)는 SQL 쿼리문 안에 포함된 또 다른 SELECT 쿼리를 말합니다. 괄호로 감싸서 사용하며, 메인 쿼리가 실행되기 전에 서브쿼리가 먼저 실행되어 그 결과가 메인 쿼리의 조건이나 값으로 사용됩니다. WHERE 절, FROM 절, SELECT 절 등 다양한 위치에 서브쿼리를 넣을 수 있습니다. 실무에서는 복잡한 조건을 단계적으로 처리할 때 매우 유용합니다. 예를 들어 '평균 가격보다 비싼 상품 목록'을 찾으려면, 먼저 서브쿼리로 평균 가격을 계산한 후 메인 쿼리에서 그 값보다 큰 상품을 조회합니다. 또는 '최근 3개월간 구매 이력이 있는 회원 목록'을 구하려면, 서브쿼리로 구매 테이블에서 해당 회원 ID를 추출한 후 회원 테이블과 비교할 수 있습니다. 서브쿼리는 가독성이 좋고 직관적이지만, 성능 면에서는 JOIN보다 느릴 수 있습니다. 특히 메인 쿼리의 각 행마다 서브쿼리가 반복 실행되는 상관 서브쿼리(Correlated Subquery)는 성능 문제가 발생할 수 있습니다. 최신 데이터베이스는 서브쿼리를 자동으로 최적화하기도 하지만, 성능이 중요한 경우에는 JOIN으로 변환하거나 CTE(Common Table Expression)를 사용하는 것이 좋습니다.