로운's 기술노트

[문법] WITH, WITH RECURSIVE 구문 본문

내배캠_데이터분석가_'24.04~08/SQL

[문법] WITH, WITH RECURSIVE 구문

로운's 2024. 4. 24. 16:42

공통 테이블 표현식 (CTE, Common Table Expression)

  WITH 및 WITH RECURSIVE는 공통 테이블 표현식(CTE)을 정의하는 데 사용되는 SQL 구문으로 쿼리 내에서 임시 결과 집합을 정의하고 그것을 다른 쿼리에서 참조할 수 있게 해준다. 이를 통해 복잡한 쿼리를 간결하게 만들고 가독성을 향상시킨다는 장점이 있다. 그러나 오히려  CTE를 무분별하게 사용할 경우엔 오히려 가독성이 저하되고 성능 문제가 발생할 수 있다.

 

 

ㅇ WITH 구문

- 주 사용처 : 임시 테이블 명의 사용하여 값을 참조.연산할 경우

- 사용 방법

WITH 임시테이블명 AS (
    SELECT *
    FROM 테이블명
)

 

- 주의사항

  • 모든 임시 테이블이 결과 집합에 사용되지 않을 경우에만 사용해야 한다. 불필요한 임시 테이블을 정의하면 성능에 영향을 줄 수 있다.
  • 기본적으로 쿼리의 가독성을 향상시킬 수 있지만, 너무 많은 WITH 구문을 사용하면 쿼리가 복잡해질 수 있다. 따라서 필요한 경우에만 사용하는 것이 좋다.

 

 

ㅇ WITH RECURSIVE 구문

- 주 사용처 : 임시 테이블을 생성하면서 자신의 값을 참조하여 값을 연산할 경우

                     계층적인 데이터 구조를 연산할 경우 (조직도 등)

- 사용 방법

WITH RECURSIVE 임시테이블명 AS (
    SELECT * -- 초기값 설정
    FROM 테이블명
    UNION ALL
    SELECT * -- 재귀식 설정
    FROM 임시테이블명
    WHERE -- 정지조건
)

 

- 주의사항

  • 재귀 쿼리는 반복적으로 결과를 생성하므로 적절한 종료 조건을 필수적으로 명시. 종료 조건이 없으면 쿼리가 무한 루프에 빠질 수 있다.
  • 재귀 쿼리가 복잡할 경우 성능이 저하될 수 있으므로, 필요한 경우에만 사용하는 것이 좋다.

 

 

 

 

 

 

 

 

Comments