본문 바로가기

MS-SQL

MSSQL 뷰(View) 완벽 정리: 개념부터 실전까지

반응형

MSSQL을 사용하다 보면 **View(뷰)**라는 개념을 자주 접하게 됩니다. 하지만 실제로 뷰를 얼마나 잘 활용하고 있을까요? 이 글에서는 뷰의 기본 개념부터 생성, 사용법, 장단점, 실무 팁까지 체계적으로 정리해 드리겠습니다.

 

뷰(View)란?

**뷰(View)**는 하나 이상의 테이블을 조합하여 만든 가상의 테이블입니다.

즉, 실제 데이터를 저장하고 있지는 않지만, SELECT 쿼리 결과를 테이블처럼 다룰 수 있도록 만들어주는 객체입니다. 뷰를 사용하면 복잡한 쿼리를 단순화할 수 있고, 데이터 접근을 제한할 수도 있습니다.

 뷰 생성 방법

CREATE VIEW 뷰이름 AS
SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
WHERE 조건;

 

 예제

CREATE VIEW vw_ActiveUsers AS
SELECT user_id, username, last_login
FROM Users
WHERE is_active = 1;

 

이 뷰는 Users 테이블에서 활성화된 사용자만 보여줍니다.


 뷰 사용 방법

뷰는 일반 테이블처럼 사용하면 됩니다.

SELECT * FROM vw_ActiveUsers;

-- 조인도 가능
SELECT u.username, o.order_date
FROM vw_ActiveUsers u
JOIN Orders o ON u.user_id = o.user_id;

 

 뷰 업데이트 / 수정

기존 뷰를 수정할 때는 ALTER VIEW 또는 CREATE OR ALTER VIEW를 사용합니다.

ALTER VIEW vw_ActiveUsers AS
SELECT user_id, username, last_login, email
FROM Users
WHERE is_active = 1;

 

 뷰 삭제

DROP VIEW vw_ActiveUsers;

 뷰의 장점

1. 복잡한 쿼리의 재사용

  • 복잡한 조인이나 조건문을 매번 쓰지 않고 뷰로 재사용 가능

2. 보안

  • 민감한 컬럼을 숨기고 제한된 데이터만 보여줄 수 있음

3. 논리적 독립성 유지

  • 테이블 구조가 변경돼도 뷰를 통해 기존 쿼리 유지 가능

4. 추상화

  • 비즈니스 로직을 뷰에 감춰서 단순화된 인터페이스 제공

 뷰의 주의사항 / 단점

  • 성능 저하
    복잡한 뷰(특히 뷰 안에 뷰가 중첩된 경우)는 성능에 영향을 줄 수 있습니다.
  • 데이터를 저장하지 않음
    항상 원본 테이블에서 데이터를 읽기 때문에 성능 문제가 있을 수 있습니다.
  • 업데이트 제한
    일반적으로 뷰를 통해 데이터를 수정할 수 있지만, 조인이나 그룹이 포함된 경우는 수정 불가합니다.

 

인덱싱된 뷰 (Indexed View)

기본적으로 뷰는 데이터를 저장하지 않지만, **인덱싱된 뷰 (또는 스키마 바인딩된 뷰)**는 예외입니다.
자주 사용되는 복잡한 뷰에 대해 인덱스를 생성하면 성능 향상에 도움이 됩니다.

-- 예: 인덱싱된 뷰 생성
CREATE VIEW vw_SalesSummary
WITH SCHEMABINDING AS
SELECT store_id, COUNT_BIG(*) AS sales_count
FROM dbo.Sales
GROUP BY store_id;

-- 클러스터형 인덱스 생성
CREATE UNIQUE CLUSTERED INDEX idx_SalesSummary
ON vw_SalesSummary (store_id);

실무 팁

  • 뷰 이름은 보통 vw_로 시작 (vw_UserList, vw_SalesSummary)
  • 뷰의 목적은 재사용성과 보안이지, 성능 향상은 아님 (인덱싱된 뷰는 예외)
  • 뷰 안에서 또 다른 뷰를 호출하는 "뷰 안의 뷰"는 성능에 영향을 줄 수 있음
  • 변경 가능한 뷰인지 확인하려면 INFORMATION_SCHEMA.VIEWS 또는 sys.sql_modules 활용

마무리

**뷰(View)**는 잘 활용하면 SQL 개발을 훨씬 더 모듈화, 구조화, 보안 강화할 수 있게 도와줍니다.
하지만 무분별한 사용은 오히려 성능 이슈나 유지보수 난이도를 높일 수 있으므로 적절한 설계와 사용 기준이 중요합니다.

반응형