- 인라인뷰(Inline View) 또는 서브쿼리(Subquery)는 SQL에서 쿼리 내에 포함된 또 다른 쿼리입니다.
- 주 쿼리의 일부로 사용되며, 주 쿼리가 실행되기 전에 먼저 실행되어 결과를 반환합니다.
1. 인라인뷰(서브쿼리)의 종류
- 스칼라 서브쿼리
- 단일 값을 반환하는 서브쿼리입니다.
- 주로 WHERE, HAVING, SELECT 절에서 사용됩니다.
- 다중 행 서브쿼리
- 여러 행을 반환하는 서브쿼리입니다.
- IN, ANY, ALL과 같은 연산자와 함께 사용됩니다.
- 다중 열 서브쿼리
- 여러 열을 반환하는 서브쿼리입니다.
- 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