subindev 님의 블로그

2025.01.06(월) 1일 1쿼리 본문

데이터 베이스/SQL - 1일 1쿼리

2025.01.06(월) 1일 1쿼리

subindev 2025. 1. 6. 17:00
Quiz 1) 부서 이름이  'Marketing'인 부서에 존재하는 모든 직급을 출력하여라.
# 1
SELECT DISTINCT title FROM titles
 WHERE emp_no IN (SELECT emp_no FROM dept_emp 
 WHERE dept_no = (SELECT dept_no FROM departments AS d WHERE dept_name = 'Marketing'));
 
 # 2
 SELECT DISTINCT title FROM titles
 WHERE emp_no IN 
	 (SELECT emp_no 
	 FROM dept_emp AS de 
	 JOIN departments AS d ON de.dept_no=d.dept_no
	 WHERE dept_name = 'Marketing');
     
# 3
SELECT DISTINCT title 
FROM titles AS t
JOIN dept_emp AS de
ON t.emp_no = de.emp_no
JOIN departments AS d
ON de.dept_no = d.dept_no
WHERE dept_name = 'Marketing';

# 4
WITH marketing_employees AS (
  SELECT de.emp_no
  FROM dept_emp de
  JOIN departments d ON de.dept_no = d.dept_no
  WHERE d.dept_name = 'Marketing'
)
SELECT DISTINCT t.title
FROM titles t
JOIN marketing_employees me ON t.emp_no = me.emp_no;

 

서브쿼리와 조인의 cost가 다르게 나올 지 궁금해서 4가지의 답을 만들어 실험해보았으나 비용이 모두 동일하게 나왔습니다. 그 이유는 SQL 쿼리 최적화 엔진이 작동했기 때문입니다. SQL 데이터베이스는 내부적으로 쿼리를 실행하기 전에 실행 계획(Execution Plan)을 생성하고, 이를 통해 가장 효율적인 방법으로 쿼리를 실행합니다. 즉, 작성한 쿼리의 표현 방식이 달라도 결국 동일한 실행 계획을 생성하는 경우, 비용이 같아질 수 있습니다.

'데이터 베이스 > SQL - 1일 1쿼리' 카테고리의 다른 글

2025.01.08(수) 1일 1쿼리  (0) 2025.01.08
2025.01.07(화) 1일 1쿼리  (1) 2025.01.07
2025.01.05(일) 1일 1쿼리  (0) 2025.01.05
2025.01.04(토) 1일 1쿼리  (0) 2025.01.04
2025.01.03(금) 1일 1쿼리  (0) 2025.01.03