본문 바로가기

oracle11R2/Workshop I

Materialized View(MView)

Materialized View(MView)
- View는 논리적, MView는 물리적으로 존재하는 테이블
- MView는 어떤 결과를 뽑아 내는 쿼리가 빈번히 사용 될 경우,
  Query 실행 시간의 수행속도 향상을 위해 사용
- 자주사용되는 View의 결과를 디스크에 저장해서 Query의 속도를 향상

사전작업
(권한부여)
GRANT QUERY REWRITE to SCOTT;
GRANT CREATE MATERIALIZE VIEW to SCOTT;

예제
CREATE MATERIALIZED VIEW dept_sal
BUILD IMMEDIATE
REFRESH
FAST
ON COMMIT
ENABLE QUERY REWRITE
AS
SELECT sum(a.sal), a.deptno
FROM emp a, dept b
WHERE a.deptno = b.deptno
GROUP BY a.deptno;

구문해석
BUILD IMMEDIATE : MView 생성과 동시에 데이터 생성
BUILD DEFERRED : MView 생성은 하지만 추후에 데이터 생성
REFRESH : Refresh 옵션
FAST : 새로운 데이터 삽입 시 점진적으로 Refresh
FORCE : Fast Refresh가 가능한지 점검후 가능하면 적용, 아니면 Completer Refresh적용
COMPLETE : MView의 데이터 전체가 Refresh
NEVER : MView의 Refresh를 발생하지 않음
ON COMMIT : 기초 테이블에 커밋이 일어날 때 Refresh
ON DEMAND : 사용자가 DBMS_MVIEW 패키지를 실행한 경우 Refresh
ENABLE QUERY REWRITE : 임의로 SQL문장을 처리 시 Query Rewrite를 고려

조회
SELECT * FROM dept_sal;
* View와 다르게 Segment 영역사용(실제 데이터) *
* 생성과 동시에 테이블도 생성됨 *