CREATE MATERIALIZED VIEW
CREATE MATERIALIZED VIEW#
구문#
create_materialized_view ::=#
table_partitioning_clause ::=, tablespace_clause ::=, logging_clause ::=, lob_column_properties ::=, build_clause ::=, refresh_clause ::=
physical_attributes_clause ::=#
build_clause ::=#
refresh_clause ::=#
전제 조건#
아래의 조건 중 하나 이상을 만족해야 사용할 수 있다.
- SYS 사용자이다.
- 사용자 자신의 스키마에 materialized view를 생성하려면, CREATE MATERIALIZED VIEW 또는 CREATE ANY MATERIALIZED VIEW 시스템 권한을 가지고 있어야 한다. 또한, 자신의 소유가 아닌 베이스 테이블 각각에 대한 SELECT 객체 권한 또는 SELECT ANY TABLE 시스템 권한이 있어야 한다.
- 다른 사용자의 스키마에 materialized view를 생성하려면, CREATE ANY MATERIALIZED VIEW 시스템 권한을 가지고 있어야 한다. 또한, 소유자의 소유가 아닌 베이스 테이블 각각에 대한 SELECT 객체 권한 또는 SELECT ANY TABLE 시스템 권한이 있어야 한다.
- Materialized view를 생성하면, materialized view 객체와 함께 데이터베이스 내부적으로 사용될 한 개의 뷰와 한 개의 테이블이 자동으로 materialized view의 스키마에 생성된다. 추가로 생성되는 이러한 객체들은 materialized view의 데이터를 유지하기 위해 사용된다. Materialized View를 생성하려는 사용자는 이러한 객체들을 생성하는데 필요한 권한을 가지고 있어야 한다.
설명#
명시된 이름으로 새로운 materialized view를 생성한다. Materialized view란 쿼리의 결과를 저장하고 있는 데이터베이스 객체이다. 쿼리의 FROM 절에는 테이블, 뷰, 및 다른 materialized view가 올 수 있다. 이러한 객체들을 "베이스 테이블"이라고 한다.
Materialized view는 쿼리문의 결과를 일반 테이블처럼 테이블스페이스에 저장하며, 주로 데이터 웨어하우스 목적으로 사용된다. 즉, 빈번히 실행되며 수행에 많은 시간이 소요되는 조인이나 집계 함수가 포함된 쿼리문을 materialized view로 생성해 두면, 쿼리 실행 시 수행 시간을 단축할 수 있다.
Altibase는 읽기 전용 materialized view만 제공한다.
user_name#
생성될 materialized view의 소유자 이름을 명시한다. 생략하면 Altibase는 현재 세션에 연결된 사용자의 스키마에 materialized view를 생성한다.
mview_name#
생성될 materialized view의 이름을 명시한다. materialized view의 이름은 2장 "객체 이름 규칙"을 따라야 한다. Altibase는 지정한 materialized view의 이름과 동일한 이름으로 materialized view의 데이터를 유지하기 위해 사용되는 테이블을 자동으로 생성한다.
c_alias#
베이스 테이블로부터 검색하는 대상이 표현식인 경우 표현식을 위한 별칭을 명시해야 한다. 이 별칭이 materialized view의 칼럼 명이 된다. 별칭의 개수는 subquery의 검색 대상(표현식과 칼럼)의 총 개수와 동일해야 한다.
table_partitioning_clause#
CREATE TABLE 구문의 table_partitioning_clause 설명을 참고하라.
segment_attributes_clause#
CREATE TABLE 구문의 segment_attributes_clause 설명을 참고하라.
lob_column_properties#
CREATE TABLE 구문의 lob_column_properties 설명을 참고하라.
phsical_attributes_clause#
CREATE TABLE 구문의 phsical_attributes_clause 설명을 참고하라.
build_clause 절#
이 절은 Materialized view의 데이터가 최초로 구축되는 시점을 지정한다. 이 절을 생략하면 기본값은 IMMEDIATE이다.
IMMEDIATE#
Materialized view가 생성되는 시점에 데이터 구축.
DEFERRED#
Materialized view이 생성된 후 리프레쉬가 수행될 때 데이터 구축.
refresh_clause 절#
Materialized view의 베이스 테이블이 변경되면, materialized view의 데이터도 업데이트되어야 한다. 이 절은 Materialized view가 refresh되는 방법과 시기를 지정한다. 이 절을 생략하면 FORCE와 ON DEMAND가 기본값으로 설정된다.
REFRESH 키워드 뒤에 COMPLETE, FAST, FORCE 중의 하나 또는 ON DEMAND, ON COMMIT 중의 하나는 반드시 지정되어야 한다.
COMPLETE#
Materialized view를 생성할 때 정의한 subquery를 수행하여 데이터가 구축될 것을 지정한다.
FAST#
현재 미지원.
FORCE#
refresh가 발생할 때, fast refresh가 가능하면 수행하고, 그렇지 않으면 complete refresh로 수행할 것을 데이터베이스에 지시한다. Altibase는 현재 FAST를 지원하지 않으므로, FORCE를 지정하는 것은 COMPLETE를 지정한 것과 동일하다.
ON DEMAND#
사용자가 요청할 때에만 refresh가 되도록 지정한다.
ON COMMIT#
현재 미지원
NEVER REFRESH#
현재 미지원
참고: Altibase가 기본적으로 제공하는 REFERESH_MATERIALIZED_VIEW 저장 프로시저를 호출해서 사용자가 materialized view의 refresh를 수동으로 요청할 수 있다. REFERESH_MATERIALIZED_VIEW 저장 프로시저에 대한 자세한 내용은 Stored Procedures Manual의 "10장 내장 함수와 저장 프로시저"를 참고하라.
subquery 절#
Materialized view의 쿼리문을 명시한다. 사용자가 materialized view를 생성하면, 이 절에 명시한 부질의가 실행되며, 그 결과가 materialized view에 저장된다.
예제#
<질의> employees 테이블을 베이스 테이블로 하여 이름이 mv1인 materialized view를 생성하라. 이 때 build절과 refresh절을 지정하지 않았기 때문에, 사용자 요청으로만 refresh가 가능하며, refresh시에 complete refresh가 수행된다.
CREATE MATERIALIZED VIEW mv1 AS
SELECT * FROM employees;