CREATE MATERIALIZED VIEW

CREATE MATERIALIZED VIEW

새 구체화 뷰(materialized view)를 정의하는 명령이에요. 쿼리 결과를 미리 계산해 테이블처럼 저장해 두고, 필요할 때 다시 채워 넣는 방식입니다.

출처: PostgreSQL 문서

본문

문법 (Synopsis)

CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
    [ (column_name [, ...] ) ]
    [ USING method ]
    [ WITH ( storage_parameter [= value] [, ... ] ) ]
    [ TABLESPACE tablespace_name ]
    AS query
    [ WITH [ NO ] DATA ]

설명 (Description)

CREATE MATERIALIZED VIEW는 쿼리의 구체화 뷰를 정의해요. WITH NO DATA를 쓰지 않는 한 이 명령이 실행되는 시점에 쿼리가 실행되어 뷰를 채우며, 이후 REFRESH MATERIALIZED VIEW로 언제든 다시 채울 수 있습니다.

CREATE MATERIALIZED VIEWCREATE TABLE AS와 비슷하지만, 뷰를 초기화할 때 사용한 쿼리도 함께 기억해 두어 나중에 필요할 때 새로고침할 수 있다는 점이 달라요. 구체화 뷰는 테이블과 비슷한 속성이 많지만, 임시 구체화 뷰는 지원하지 않습니다.

CREATE MATERIALIZED VIEW를 실행하려면 구체화 뷰를 둘 스키마에 대한 CREATE 권한이 필요해요.

파라미터 (Parameters)

  • IF NOT EXISTS — 같은 이름의 구체화 뷰가 이미 있어도 오류를 내지 않아요. 이 경우 공지(notice)만 발행됩니다. 다만 이미 있는 뷰가 새로 만들려던 뷰와 같을 거라는 보장은 없어요.
  • table_name — 만들 구체화 뷰의 이름(스키마 한정 가능). 같은 스키마의 다른 릴레이션(테이블, 시퀀스, 인덱스, 뷰, 구체화 뷰, 외부 테이블)과 이름이 달라야 해요.
  • column_name — 새 구체화 뷰의 컬럼 이름. 이름을 주지 않으면 쿼리 출력 컬럼 이름을 그대로 사용합니다.
  • USING method — 새 구체화 뷰 내용을 저장할 테이블 접근 메서드를 지정하는 선택 절이에요. 메서드는 TABLE 타입의 접근 메서드여야 합니다. 지정하지 않으면 기본 테이블 접근 메서드가 선택돼요 (자세한 내용은 62장 참고).
  • WITH ( storage_parameter [= value] [, ... ] ) — 새 구체화 뷰의 저장 파라미터를 지정하는 절. CREATE TABLE에서 지원하는 모든 파라미터가 CREATE MATERIALIZED VIEW에서도 지원됩니다.
  • TABLESPACE tablespace_name — 새 구체화 뷰를 만들 테이블스페이스 이름. 지정하지 않으면 default_tablespace를 따릅니다.
  • querySELECT, TABLE 또는 VALUES 명령. 이 쿼리는 보안 제한(security-restricted) 연산 안에서 실행되며, 특히 임시 테이블을 만드는 함수 호출은 실패해요. 쿼리가 실행되는 동안 search_path는 일시적으로 pg_catalog, pg_temp로 바뀝니다.
  • WITH [ NO ] DATA — 생성 시점에 구체화 뷰를 채울지 여부를 지정하는 절이에요. 채우지 않으면 뷰는 스캔 불가(unscannable)로 표시되어 REFRESH MATERIALIZED VIEW를 쓰기 전까지 조회할 수 없습니다.

호환성 (Compatibility)

CREATE MATERIALIZED VIEW는 PostgreSQL 확장 기능이에요.

함께 보기 (See Also)

ALTER MATERIALIZED VIEW, CREATE TABLE AS, CREATE VIEW, DROP MATERIALIZED VIEW, REFRESH MATERIALIZED VIEW

더 알아보기 (Learn more)

  • REFRESH MATERIALIZED VIEW: 구체화 뷰의 내용을 새로 채우는 명령.
  • CREATE TABLE AS: 쿼리 결과로 새 테이블을 만드는 명령.