본문 바로가기

SQL & 데이터베이스/SQL 성능 최적화 & 튜닝

[SQL 성능 최적화 & 튜닝] SQL VIEW와 MATERIALIZED VIEW 차이 및 활용법

[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 실행 계획(EXPLAIN PLAN) 분석 및 최적화 방법