IT Study/데이터베이스 및 데이터 처리

🗂️ View와 CTE(Common Table Expression)의 차이점과 활용 시기

cs_bot 2025. 4. 16. 16:03

1. 개념 정의

  • View(뷰)
    → 하나 이상의 테이블로부터 생성된 가상의 테이블 개념
    → SELECT 문을 정의한 결과셋을 마치 물리 테이블처럼 사용할 수 있게 함
    → 데이터 중복 제거, 보안 제한, 복잡한 쿼리 캡슐화 등에 활용
    → 실제 데이터를 저장하지 않고, 정의된 SQL 문을 실행할 때마다 최신 데이터로 반영됨

  • CTE(Common Table Expression)
    → 복잡한 쿼리를 임시적으로 단순화하기 위해 WITH 키워드를 사용하여 선언하는 일시적 결과셋
    → 쿼리 실행 시점에만 유효하며, 재사용 불가능한 일회성 가상 테이블 형태
    → 재귀 쿼리 구현, 쿼리 가독성 향상, 트리 구조 탐색 등에서 사용됨


2. View와 CTE의 구조 및 관리 방식 차이

구분 View CTE
선언 키워드 CREATE VIEW WITH
저장 방식 데이터베이스 내 정의가 영구적으로 저장됨 실행 중인 쿼리 문맥에서 일시적으로 정의됨
재사용 여부 여러 쿼리에서 재사용 가능 같은 쿼리 내에서만 사용 가능
업데이트 가능성 특정 조건에서 DML 연산 가능 일반적으로 SELECT 전용 (읽기 전용 구조)
보안 적용 가능 특정 열 또는 행만 노출하는 보안 View 설계 가능 보안 용도보다는 쿼리 최적화 및 논리 분리에 초점
재귀 지원 여부 일반적으로 재귀 쿼리 구현 어려움 WITH RECURSIVE를 통해 재귀 구조 지원 가능

3. 활용 시기 구분

  • View 활용 시점
    → 반복적으로 사용하는 복잡한 SELECT 쿼리를 재사용하고자 할 때
    → 테이블의 구조를 캡슐화하여 외부에 추상화된 데이터 제공이 필요할 때
    → 보안상 민감한 테이블 일부 열만 외부에 노출하고자 할 때
    → BI 도구, 리포팅 툴, 응용시스템에서 일관된 쿼리 결과 제공이 필요할 때
    → 논리적 스키마 분리나 OLAP 환경에서 계층적 분석 구조 정의 시 유리함

  • CTE 활용 시점
    → 하나의 쿼리 내에서 복잡한 하위 SELECT 또는 파생 테이블을 계층화할 때
    → 트리 구조(예: 조직도, 메뉴 구조) 탐색이나 경로 계산 등 재귀 쿼리가 필요한 경우
    → 쿼리 내에서 여러 단계의 결과를 나누어 표현하여 가독성을 높이고자 할 때
    → 파티션 윈도우 함수와 결합하여 집계와 조건 필터링을 구분할 때
    → 일시적 논리 테이블이 필요한 분석형 쿼리에서 효율적임


4. 실무 적용 사례 비교

  • View 적용 사례

    • 예: 고객정보 테이블 중 이름, 연락처, 등급만을 포함하는 vip_customers_view 생성
    • 대내외 협력 시스템 간 데이터 노출 범위 제어용 보안 View 활용
    • 다수 사용자에게 동일한 분석용 쿼리 결과를 제공하기 위한 재사용 View 구성
  • CTE 적용 사례

    • 예: WITH RECURSIVE 문법을 이용한 상위-하위 관계 트리 구조 쿼리
    • WITH절에서 중간 계산 결과를 정의하고 이후 메인 SELECT문에서 참조
    • 시간대별 누적 합계, 이동 평균 등의 계산 로직을 단계적으로 분리 구현

5. 정리 및 결론

  • View와 CTE 모두 복잡한 SQL 로직을 단순화하고 재사용성 또는 가독성을 확보하기 위한 수단
  • View는 지속적 관리가 필요한 구조화된 쿼리의 저장에 적합하며, 보안 및 데이터 일관성 제공에 유리
  • CTE는 일회성 쿼리 내 복잡한 로직을 분해하거나 재귀, 분석 쿼리 작성 시 효율적으로 사용
  • 상황에 따라 두 개념을 혼용하여 복잡한 데이터 처리를 구조화할 수 있음

※ 추가 참고

  • ANSI SQL 표준 기준으로 CTE와 View는 모두 쿼리 추상화를 제공하지만, 범위와 수명 주기가 본질적으로 상이
  • 성능 측면에서는 View는 인덱스를 활용하거나 Materialized View로 확장 가능하나, CTE는 실행마다 반복 계산됨
  • 따라서 목적, 범위, 유지관리 정책 등을 고려하여 적절한 방식 선택이 중요함