15

"이 쿼리 좀 읽어볼 수 있어?"

Day 3: 쿼리가 너무 복잡한데 쪼갤 수 없나?

학습 목표

CTE가 필요한 실무 상황을 이해한다 복잡한 서브쿼리의 한계를 체감한다

수요일 오후, 코드 리뷰 시간

선임이 내 쿼리를 보더니 한숨을 쉰다.

"이거... 네가 짠 거 맞아? 나중에 수정할 수 있어?"

내가 짠 쿼리:

에디터 로딩 중...

"뭘 하는 쿼리인지 한눈에 안 들어오지?"

솔직히... 나도 다시 보니까 헷갈린다.


문제점

  1. 가독성 제로: 괄호 안에 괄호 안에 괄호...
  2. 중복 로직: status = 'completed' 조건이 두 번
  3. 디버깅 불가: 중간 결과를 확인할 방법이 없음
  4. 수정 공포: 한 군데 고치면 전체가 망가질 것 같음

선임의 리팩토링 (CTE 사용)

에디터 로딩 중...

똑같은 결과인데, 읽기가 훨씬 쉽다!


오늘 배울 것

  1. CTE (WITH 절): 복잡한 쿼리를 단계별로 분리
  2. CTE 체이닝: 여러 CTE를 연결하는 파이프라인
  3. 재귀 CTE: 조직도, 카테고리 트리 등 계층 구조 처리
  4. CTE vs 서브쿼리: 언제 무엇을 쓸지

"SQL의 변수 선언" 같은 CTE를 마스터하면, 아무리 복잡한 분석도 깔끔하게 작성할 수 있다.