View란 무엇이고 언제 쓰나요?
면접용 답변
View는 데이터베이스에서 SELECT 쿼리 결과를 저장한 가상의 테이블입니다. 물리적으로 데이터를 복사하거나 저장하지 않고, 필요할 때마다 정의된 쿼리를 실행하여 결과를 조회하는 형태입니다.
주로 복잡한 쿼리를 단순화하거나, 보안상 일부 컬럼이나 데이터만 노출하고 싶을 때 사용합니다. 또한 재사용성을 높이고, 코드 가독성을 향상시키는 데도 유용합니다.
개념 설명
View
가상의 테이블 (Virtual Table)
실제 데이터를 저장하지 않고, 미리 정의한 SELECT 쿼리 결과를 조회하는 형태
사용자는 View를 일반 테이블처럼 조회할 수 있음 (
SELECT * FROM view_name)데이터는 View에 실제 저장되지 않음
View 객체에는 쿼리 정의(메타데이터) 만 저장됨
View를 조회하면 매번 원본 테이블에 대해 쿼리 실행 (실시간 데이터 조회)
View를 기반으로 추가 조회, 조인, 중첩 View 생성도 가능
사용하는 이유 (장점)
복잡한 쿼리 단순화 → 복잡한 JOIN, WHERE 조건 등을 숨기고 깔끔한 인터페이스 제공
보안 강화 → 민감한 컬럼 제외하고 제한된 정보만 사용자에게 제공
재사용성과 일관성 확보 → 여러 곳에서 동일한 복잡 로직을 반복할 필요 없이 View로 관리
유지보수 편리성 → 쿼리 수정 시 View만 수정하면 일괄 반영 가능
주의할 점 (단점)
성능 저하 가능성 → View 조회 시 매번 원본 테이블 접근 → 복잡하거나 중첩된 View는 느려질 수 있음
중첩 View 증가 시 디버깅과 최적화가 어려워질 수 있음
일부 DBMS에서는 View를 통한 데이터 수정(INSERT/UPDATE/DELETE)에 제약이 있음
View vs Materialized View
데이터 저장
저장하지 않음 (쿼리 정의만 저장)
결과 데이터를 물리적으로 저장
조회 시 동작
매번 원본 테이블에 쿼리 실행 (실시간 데이터)
저장된 결과를 조회 (더 빠름, 최신 데이터 아닐 수 있음)
업데이트
원본 데이터 변경 즉시 반영
수동/자동으로 갱신 필요 (DBMS에 따라 자동 갱신 지원)
사용 목적
단순화, 보안, 재사용성
성능 최적화 (특히 복잡하거나 무거운 쿼리)
단점
성능 저하 가능성
데이터 갱신 관리 필요
일부 DBMS는 Materialized View의 자동 Refresh 기능을 지원함
추가 질문
View와 Materialized View를 비교하여 설명해주세요
View는 실제 데이터를 저장하지 않고, 미리 정의한 SELECT 쿼리를 실시간으로 실행하여 결과를 보여주는 가상의 테이블입니다. 반면 Materialized View는 쿼리 결과 자체를 물리적으로 저장해 두고 필요 시 이를 조회하므로 속도가 빠르지만, 주기적으로 데이터를 리프레시(refresh) 해야 하며, 관리 비용이 따릅니다. View는 단순화, 보안, 재사용 목적에 적합하고, Materialized View는 성능 향상이 필요한 복잡한 조회 작업에 적합합니다.
View를 사용하면 성능이 항상 좋아지나요?
아닙니다. View는 매번 원본 테이블에 쿼리를 실행하기 때문에, 복잡한 View나 중첩 View는 오히려 성능 저하를 유발할 수 있습니다. 특히 다수의 조인이나 연산이 포함된 View를 자주 호출하면, 매번 동일한 연산을 반복하게 되어 불필요한 부하가 생길 수 있습니다. 따라서 성능이 중요한 경우에는 Materialized View를 사용하거나, 쿼리 자체를 최적화하는 것이 더 적절합니다.
Last updated