데이터베이스 뷰(View)란 이름을 붙여 데이터베이스 안에 저장해 둔 SQL 문장을 의미합니다. 뷰는 미리 정의된 SQL 쿼리 형태로 구성된 일종의 가상 테이블이라고 이해하면 쉽습니다.
뷰는 테이블의 모든 행을 담을 수도 있고, 필요한 행만 골라서 담을 수도 있습니다. 또한 하나의 테이블에서 만들 수도 있고, 뷰를 생성할 때 작성하는 MySQL 쿼리에 따라 여러 개의 테이블을 조합해 만들 수도 있습니다.
뷰(Virtual Table)로 할 수 있는 일
가상 테이블의 일종인 뷰를 활용하면 다음과 같은 작업이 가능합니다.
- 사용자나 사용자 그룹이 자연스럽고 직관적으로 이해할 수 있는 형태로 데이터를 구조화할 수 있습니다.
- 사용자가 꼭 필요한 데이터만 보거나(경우에 따라 수정하거나) 그 이상은 접근할 수 없도록 데이터 접근을 제한할 수 있습니다.
- 여러 테이블에 흩어져 있는 데이터를 요약하여 보고서 작성에 활용할 수 있습니다.
MySQL 뷰의 작동 원리
본질적으로 뷰는 다른 테이블이나 뷰 위에 정의된 객체입니다. 따라서 기반이 되는 테이블의 데이터가 변경되면, 그 변경 사항은 뷰에도 그대로 반영됩니다. 뷰는 단일 테이블 위에 만들 수도 있고 여러 테이블을 조합해 만들 수도 있습니다.
MySQL은 버전 5부터 데이터베이스 뷰를 공식적으로 지원하기 시작했으며, 뷰에 대해 실행되는 쿼리는 크게 두 가지 방식으로 처리됩니다.
1. 임시 테이블 생성 방식
MySQL이 뷰 정의문을 기반으로 임시 테이블을 먼저 생성한 뒤, 들어온 쿼리를 이 임시 테이블 위에서 실행하는 방식입니다.
2. 쿼리 병합 방식
들어온 쿼리와 뷰에 정의된 쿼리를 하나의 쿼리로 병합한 후, 병합된 쿼리를 한 번에 실행하는 방식입니다. 이 방식은 불필요한 임시 테이블 생성을 줄여 성능 면에서 유리한 경우가 많습니다.