SQL View vs CTE

이상민·2021년 8월 15일
0
post-thumbnail

1. View

  • 저장된 쿼리문. 다른 쿼리문에서 호출 시마다 실행된다. 사실상 쿼리문의 alias

  • 질의의 결과를 저장하는 것이 아니라 질의 그 자체를 저장한다

  • 물리적 객체로 디스크에 저장된다

2. Common Table Expression

  • CTE란 해당 쿼리문 내에서만 존재하는 일시적인 테이블(정확히는 결과의 집합)을 말한다

  • 메모리에서만 존재하며 WITH문 사용시에만 연산된다. 해당 쿼리문이 끝나면 버려진다

  • inline view라고 부르기도 한다

  • 재귀가 가능해 트리 구조 관련해 사용하거나 할때 유용하다

WITH
    cte1 AS (SELECT a, b FROM table1)
    cte2 AS (SELECT c, d, FROM table2)
SELECT b, d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;

3. View vs CTE

저장위치사용 구역재귀인덱싱
View디스크여러 sql문XO
CTE메모리해당 sql문OX

4. CTE를 View로 사용하기

  • 아래처럼 View 안에 CTE를 정의해 사용하는 것도 가능하다
CREATE VIEW top_app_per_category AS
WITH top_app_max_reviews AS (

    SELECT category, MAX(reviews) AS max_num_reviews

    FROM top_apps

    GROUP BY category)
SELECT ta.name, ta.category, ta.reviews
FROM top_apps ta
JOIN top_app_max_reviews tamr
ON ta.reviews = tamr.max_num_reviews;

참고

https://learnsql.com/blog/difference-between-sql-cte-and-view/

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글