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 VIEW는 CREATE 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를 따릅니다.query—SELECT,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: 쿼리 결과로 새 테이블을 만드는 명령.