[SQL] SQL VIEW와 MATERIALIZED VIEW 차이 및 활용법
1. VIEW란?
VIEW(뷰)는 실제 테이블이 아닌,
하나 이상의 테이블을 기반으로 한 **가상 테이블(Virtual Table)** 입니다.
데이터를 효율적으로 관리하고 복잡한 SQL 쿼리를 간소화하는 데 유용하게 사용됩니다.
✔ **VIEW 기본 사용법**
-- VIEW 생성
CREATE VIEW employee_view AS
SELECT emp_id, name, salary FROM employees WHERE salary > 5000;
-- VIEW 조회
SELECT * FROM employee_view;
✅ **특징:**
- **물리적인 데이터 저장 공간을 차지하지 않음**
- 테이블처럼 사용 가능하지만, **실제 데이터는 원본 테이블에서 가져옴**
- 복잡한 쿼리를 **단순화**하여 코드 유지보수성을 높일 수 있음 ---
2. MATERIALIZED VIEW란?
MATERIALIZED VIEW(물리적 뷰)는 일반 VIEW와 달리,
**쿼리 결과를 저장하는 테이블 형태의 VIEW**입니다.
데이터가 자주 변경되지 않는 경우, 조회 성능을 최적화하는 데 효과적입니다.
✔ **MATERIALIZED VIEW 기본 사용법**
-- MATERIALIZED VIEW 생성
CREATE MATERIALIZED VIEW employee_mv
BUILD IMMEDIATE
REFRESH COMPLETE
AS
SELECT emp_id, name, salary FROM employees WHERE salary > 5000;
-- MATERIALIZED VIEW 조회
SELECT * FROM employee_mv;
✅ **특징:**
- **쿼리 결과를 저장**하여, 반복 실행 시 성능 최적화
- **데이터를 주기적으로 갱신 가능 (REFRESH 옵션 사용)**
- **데이터가 변경되면 최신 상태로 업데이트 필요** ---
3. VIEW와 MATERIALIZED VIEW 비교
구분 | VIEW | MATERIALIZED VIEW |
---|---|---|
데이터 저장 | 원본 테이블에서 실시간 조회 | 쿼리 실행 결과를 저장 |
쿼리 성능 | 매번 원본 테이블을 조회 | 저장된 데이터를 조회하므로 빠름 |
데이터 갱신 | 자동 반영 | REFRESH를 통해 수동 또는 자동 갱신 |
사용 사례 | 복잡한 쿼리 간소화, 보안 목적 | 대량의 정적인 데이터 조회 성능 개선 |
---
4. MATERIALIZED VIEW의 REFRESH 옵션
MATERIALIZED VIEW는 데이터 갱신 방법에 따라 다양한 **REFRESH 옵션**을 제공합니다.
✔ **REFRESH 옵션 종류**
옵션 | 설명 |
---|---|
FAST | 변경된 부분만 갱신 (INCREMENTAL UPDATE) |
COMPLETE | 전체 데이터를 다시 계산하여 갱신 |
ON DEMAND | 명시적으로 REFRESH 실행 시 갱신 |
ON COMMIT | 트랜잭션이 COMMIT될 때 자동 갱신 |
✔ **MATERIALIZED VIEW 갱신 예제**
-- 수동 갱신 (ON DEMAND)
EXEC DBMS_MVIEW.REFRESH('employee_mv');
-- 트랜잭션 완료 시 자동 갱신 (ON COMMIT)
CREATE MATERIALIZED VIEW employee_mv
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT emp_id, name, salary FROM employees;
✅ **사용 예:**
- **FAST:** 자주 갱신되지만 변경되는 데이터가 적을 때
- **COMPLETE:** 갱신 주기가 길고, 데이터가 한 번에 변경될 때 ---
5. 언제 VIEW와 MATERIALIZED VIEW를 사용할까?
- ✔ **VIEW를 사용해야 할 때**
- 자주 실행되는 복잡한 SQL을 단순화하고 싶을 때
- 원본 데이터가 변경될 때 **자동 반영이 필요한 경우**
- 데이터 보안상 **원본 테이블을 직접 노출하고 싶지 않을 때**
- ✔ **MATERIALIZED VIEW를 사용해야 할 때**
- 자주 사용되는 대량의 데이터를 캐싱하여 조회 속도를 높이고 싶을 때
- 데이터 변경이 자주 발생하지 않는 경우
- 온라인 분석 처리(OLAP) 환경에서 성능을 개선하고 싶을 때
---
📌 정리
- ✔ VIEW는 가상 테이블이며, 원본 테이블을 실시간으로 조회
- ✔ MATERIALIZED VIEW는 쿼리 결과를 저장하여 조회 성능을 최적화
- ✔ MATERIALIZED VIEW는 주기적으로 REFRESH가 필요함
- ✔ VIEW는 복잡한 쿼리 간소화, MATERIALIZED VIEW는 빠른 데이터 조회에 적합
🔗 다른 SQL 최적화 관련 글도 함께 확인해보세요!
'SQL & 데이터베이스 > SQL 성능 최적화 & 튜닝' 카테고리의 다른 글
SQL 인덱스(Index) 최적 활용법: 클러스터형 vs 비클러스터형 (0) | 2025.03.19 |
---|---|
[SQL 성능 최적화 & 튜닝] 오라클 INDEX 종류와 활용법 (B-Tree, Bitmap) (0) | 2025.03.15 |
[SQL] 윈도우 함수(Window Function) 개념과 활용 예제 (0) | 2025.03.13 |
[SQL] INDEX(인덱스) 개념과 성능 최적화 방법 (1) | 2025.03.12 |
[SQL] 인덱스(INDEX) 활용하여 SQL 성능 최적화하기 (0) | 2025.03.11 |