15분
"이 쿼리 좀 읽어볼 수 있어?"
Day 3: 쿼리가 너무 복잡한데 쪼갤 수 없나?
"이 쿼리 좀 읽어볼 수 있어?"
SQL 고급 - 윈도우 함수와 성능 최적화 > Day 3: 쿼리가 너무 복잡한데 쪼갤 수 없나?
학습 목표
CTE가 필요한 실무 상황을 이해한다 복잡한 서브쿼리의 한계를 체감한다
수요일 오후, 코드 리뷰 시간
선임이 내 쿼리를 보더니 한숨을 쉰다.
"이거... 네가 짠 거 맞아? 나중에 수정할 수 있어?"
내가 짠 쿼리:
에디터 로딩 중...
"뭘 하는 쿼리인지 한눈에 안 들어오지?"
솔직히... 나도 다시 보니까 헷갈린다.
문제점
- 가독성 제로: 괄호 안에 괄호 안에 괄호...
- 중복 로직:
status = 'completed'조건이 두 번 - 디버깅 불가: 중간 결과를 확인할 방법이 없음
- 수정 공포: 한 군데 고치면 전체가 망가질 것 같음
선임의 리팩토링 (CTE 사용)
에디터 로딩 중...
똑같은 결과인데, 읽기가 훨씬 쉽다!
오늘 배울 것
- CTE (WITH 절): 복잡한 쿼리를 단계별로 분리
- CTE 체이닝: 여러 CTE를 연결하는 파이프라인
- 재귀 CTE: 조직도, 카테고리 트리 등 계층 구조 처리
- CTE vs 서브쿼리: 언제 무엇을 쓸지
"SQL의 변수 선언" 같은 CTE를 마스터하면, 아무리 복잡한 분석도 깔끔하게 작성할 수 있다.