VIEW란 무엇인가?
database에서 view는 물리적 객체가 아니라 논리적 객체로 가상의 테이블입니다.
view에서 지정한 쿼리는 다른 쿼리로 이 view를 참조할 때마다 실행됩니다.
- table은 select, update 및 delete가 가능하지만 view는 select만 가능합니다.
- table은 데이터를 포함하고 view는 어떤 데이터도 포함되어 있지 않습니다.
VIEW를 왜 사용하나요?
- 데이터 보안 : view를 사용하여 테이블에 대한 액세스를 제한할 수 있으므로 어떤 사용자가 어떤 데이터를 보고 조작할 수 있는지 제어할 수 있습니다.
- 단순화 : 전체 테이블을 표시하는 대신 관련 열과 행만 표시하여 데이터 쿼리 프로세스를 단순화할 수 있스니다.
- 추상화 : 기본 데이터 구조를 추상화하고 데이터에 대한 상위 수준 인터페이스를 제공하여 이해하고 작업하기 쉽게 만듭니다.
- 성능 : 데이터를 사전 집계하거나 인덱스를 사용하여 데이터에 보다 효율적으로 액세스함으로써 복잡한 쿼리의 성능을 향상시킬 수 있습니다.
- 데이터 무결성 : 삽입, 업데이트 또는 삭제할 수 있는 데이터를 제한하여 비즈니스 규칙을 적용하는 데 사용할 수 있습니다.
- 재사용성 : 여러 쿼리, 보고서, 대시보드 등의 기반으로 사용할 수 있습니다.
Best Practices
- 복잡한 쿼리 단순화: join 또는 sub query와 같은 복잡한 논리를 캡슐화하고 작업하기 쉬운 단순화된 형식으로 데이터를 표시합니다.
- column 수 제한: 성능을 개선하고 전송해야 하는 데이터 양을 줄일 수 있으므로 필요한 열만 포함합니다.
- 데이터 보안 적용: 데이터의 특정 열 또는 행에 대한 액세스를 제한하고 특정 사용자 또는 역할에 대한 액세스를 제한합니다.
- 데이터 수정에 사용 금지: 뷰는 일반적으로 읽기 전용이므로 뷰를 통해 데이터를 수정하려고 하면 오류나 예기치 않은 동작이 발생할 수 있습니다.
- 무결성 적용: view를 사용하여 특정 비즈니스 규칙에 따라 데이터를 삽입, 업데이트 또는 삭제합니다.
- 성능 향상: view를 사용하여 데이터를 사전 집계하거나 index를 사용하여 데이터에 보다 효율적으로 액세스하여 쿼리 성능을 향상시킬 수 있습니다.
- 기본 데이터 구조 추상화: 데이터에 대한 상위 수준 인터페이스를 제공하여 더 쉽게 이해하고 작업할 수 있습니다.
- 재사용성 향상: 여러 쿼리, 보고서, 대시보드 등의 기반으로 사용할 수 있습ㄴ디ㅏ.
- 데이터 일관성 유지: 다른 애플리케이션이나 사용자가 동일한 버전의 데이터로 작업하도록 유지하십시오.
- 성능 문제를 숨기기 위해 view를 사용하지 않음: view의 성능이 좋지 않은 경우 view를 사용하여 숨기기 보다 근본적인 성능 문제를 식별하고 해결하는 것이 중요합니다.
개인적으로는 CTE문을 사용하여 쿼리를 단순화하다가 반복적으로 사용되는 부분을 view로 만들어서 유용하게 사용하고 있습니다.