인라인뷰(Inline View) 또는 서브쿼리(Subquery)

KangHo Lee's avatar
Dec 04, 2024
인라인뷰(Inline View) 또는 서브쿼리(Subquery)
  • 인라인뷰(Inline View) 또는 서브쿼리(Subquery)는 SQL에서 쿼리 내에 포함된 또 다른 쿼리입니다.
  • 주 쿼리의 일부로 사용되며, 주 쿼리가 실행되기 전에 먼저 실행되어 결과를 반환합니다.

1. 인라인뷰(서브쿼리)의 종류

  1. 스칼라 서브쿼리
      • 단일 값을 반환하는 서브쿼리입니다.
      • 주로 WHERE, HAVING, SELECT 절에서 사용됩니다.
  1. 다중 행 서브쿼리
      • 여러 행을 반환하는 서브쿼리입니다.
      • IN, ANY, ALL과 같은 연산자와 함께 사용됩니다.
  1. 다중 열 서브쿼리
      • 여러 열을 반환하는 서브쿼리입니다.
      • EXISTS와 함께 사용됩니다.

2. 사용 예시

WHERE 절에서의 서브쿼리

특정 조건에 맞는 데이터를 필터링하는 예시입니다.
SELECT employee_id, first_name, last_name FROM employees WHERE department_id = ( SELECT department_id FROM departments WHERE department_name = 'Sales' );
  • 위 예제에서, 서브쿼리는 Sales 부서의 department_id를 반환하고, 주 쿼리는 해당 부서에 속한 직원들의 정보를 조회합니다.

FROM 절에서의 서브쿼리 (인라인뷰)

서브쿼리를 인라인뷰로 사용하는 예시입니다.
SELECT dept_name, employee_count FROM ( SELECT department_id, COUNT(*) AS employee_count FROM employees GROUP BY department_id ) AS dept_counts JOIN departments d ON dept_counts.department_id = d.department_id;
  • 위 예제에서, 인라인뷰는 각 부서의 직원 수를 계산하고, 주 쿼리는 부서 이름과 직원 수를 조회합니다.

장점

  • 복잡한 쿼리 분리: 인라인뷰를 사용하여 복잡한 쿼리를 여러 단계로 분리할 수 있습니다.
  • 재사용성: 동일한 서브쿼리를 여러 곳에서 재사용할 수 있습니다.
  • 가독성: 복잡한 논리를 인라인뷰로 분리하여 메인 쿼리를 더 이해하기 쉽게 만들 수 있습니다.

주의사항

  • 성능: 서브쿼리가 여러 번 실행되면 성능이 저하될 수 있으므로, 적절한 인덱스를 사용하거나 JOIN으로 대체할 수 있는지 고려해야 합니다.
  • 최적화: 데이터베이스 옵티마이저가 서브쿼리를 최적화할 수 있도록 구조를 잘 설계하는 것이 중요합니다.
Share article

devleekangho