데이터베이스를 사용하다보면 과도한 조인의 사용이나
잘못된 설계로 인한 성능의 저하가 발생하곤 합니다.
이러한 성능 저하를 최소화하기 위해선 데이터베이스 튜닝이 필요합니다.
이번 게시글은 그 방법 중에서도 View와 INDEX를 알아보겠습니다.
뷰(View)
특징
- 하나 이상의 테이블로부터 유도되어 만들어진 가상 테이블
- 저장 장치에 물리적으로 존재하지 않음
- 정의된 뷰를 새로운 뷰의 정의에 사용할 수 있음
목적
- 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위한 경우
- 데이터 보정 작업, 처리과정 시험 등 임시적인 작업 용도
- 조인문의 사용을 최소화하여 사용자의 편의성을 최대화
장점
- 논리적 데이터 독립성을 제공(응용 프로그램 <-> 데이터베이스)
- 동일 데이터에 대해 동시에 여러 사용자의 상이한 응용이나 요구를 지원
- 사용자의 데이터 관리를 간단하게 만듬
- 명령문이 간단해지게 만듬
- 접근 제어를 통한 보안의 제공
단점
- 독립적인 인덱스를 가질 수 없음
- 뷰의 정의를 변경할 수 없음(ALTER문 사용 불가)
- 뷰에 구성된 내용에 대한 DML문의 사용에 제약이 따름
인덱스(INDEX)
특징
- 데이터를 검색할때 보다 빠르게 결과를 반환하도록 색인하여 도움
- 기본키를 생성하는 경우 기본키에 대한 칼럼은 자동적으로 INDEX 생성
- 이 또한 물리적인 공간을 차지하므로 모든 칼럼에 인덱스를 적용해선 안됨
(자주 검색에 사용되는 칼럼에 적용을 추천)
인덱스의 종류
유형 | 설명 |
순서 인덱스 | 데이터가 정렬된 순서로 인덱스 관리 |
해시 인덱스 | 해시 함수에 의하여 직접 데이터에 키값으로 접근하는 인덱스 |
비트맵 인덱스 | 수정 변경이 적은 경우에 유용 |
함수기반 인덱스 | 일반 사용자 정의 함수의 결과를 인덱스로 사용 |
단일 인덱스 | 하나의 컬럼으로만 인덱스를 지정 |
결합 인덱스 | 복수개의 컬럼을 이용하여 인덱스 지정 |
클러스터드 인덱스 | 저장된 데이터의 물리적 순서에 따라 인덱스 지정 |