재귀 소개

SQL Server에서의 계층형 및 재귀 쿼리

Jasmin Ludolf

Content Developer

재귀란?

재귀는 지정된 조건을 만족할 때까지 자신을 한 번 이상 호출하는 절차, 서브루틴, 함수, 또는 알고리즘을 말합니다

자신을 여러 번 호출하는 재귀 특성을 보여주는 이미지.

SQL Server에서의 계층형 및 재귀 쿼리

현실 사례로 보는 재귀

가족 계보 - 최근 5세대의 모든 아버지 찾기

  • 문제를 같은 유형의 더 작은 문제로 축소
    1. 전체 문제: 다섯 세대 모두 찾기
    2. 작은 문제: 아버지 찾기, 그 아버지 찾기, ...
  • 단계 수를 제한

하노이의 탑의 재귀적 성질.

SQL Server에서의 계층형 및 재귀 쿼리

재귀에 대한 사실

장점:

  • 재귀적으로 문제 해결
  • 읽기와 추적이 쉬움
  • 종료 조건으로 재귀 범위 제한 가능

단점:

  • 실행 속도가 느림
SQL Server에서의 계층형 및 재귀 쿼리

재귀 예시 - 합계 구하기

수학적 정의

연속된 자연수의 합은 다음과 같이 재귀적으로 정의됩니다:

number = 1 
    for iteration = 1
number = number + (iteration - 1) 
    for iteration > 1

5까지의 합은:

1+2+3+4+5 = 15
SQL Server에서의 계층형 및 재귀 쿼리

재귀 예시 - 합계 구하기

  • SQL의 재귀: 공통 테이블 식 - CTE
WITH calculate_SumOfNumber AS
     ( -- 초기 쿼리
    SELECT 1 AS iteration, 1 AS SumOfNumber

UNION ALL -- 재귀 부분 SELECT iteration + 1, SumOfNumber + (iteration + 1) FROM calculate_SumOfNumber
WHERE iteration < 6 )
SELECT SumOfNumber FROM calculate_SumOfNumber
SQL Server에서의 계층형 및 재귀 쿼리

연습해 봅시다!

SQL Server에서의 계층형 및 재귀 쿼리

Preparing Video For Download...