Anchor + Recursive

재귀 CTE의 실행 구조

재귀 CTE는 시작 행을 만든 뒤, 직전 결과를 이용해 다음 계층을 반복적으로 확장합니다.

Anchor
UNION ALL
Recursive + 종료
Anchor

시작점

CEO, 최상위 카테고리처럼 부모가 없는 첫 행을 만듭니다.

Working set

직전 결과

이번 반복에서 하위 노드를 찾는 입력으로 사용됩니다.

Recursive

다음 계층

직전 결과와 원본 테이블을 조인해 새 행을 찾습니다.

UNION ALL

결과 누적

새 행을 전체 결과에 붙이고, 다음 반복 입력으로 넘깁니다.

1회차Anchor가 manager_id IS NULL인 김대표를 결과와 working set에 넣습니다.
2회차 이후Recursive term이 직전 working set을 소비해 이부장, 정부장 같은 새 행을 찾습니다.
반복 종료새 행이 없거나 최대 깊이에 도달하면 UNION ALL 누적 결과를 반환합니다.

순환 참조가 있으면 반복이 끝나지 않을 수 있으므로 깊이 제한이나 CYCLE/NOCYCLE 같은 방어가 필요합니다.