1. 인덱스(Index)
1. 1. 인덱스의 개념
: 추가적인 저장공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조. ※목차, 힌트(Hint)
1. 2. 인덱스 설계 시 고려사항
– 인덱스 컬럼은 수정이 빈번하지 않고, 분포도가 10~15% 이내인 컬럼을 선정.
– 지나치게 많은 인덱스는 오버헤드(Overhead)발생.
– 인덱스만의 추가적인 저장 공간 필요.
– 인덱스와 테이블의 저장공간이 분리되도록 설계.
1. 3. 인덱스의 종류
클러스터드 인덱스(Clustered index): 한 개의 릴레이션에 하나의 인덱스만 생성.
넌클러스터드 인덱스(Non-Clustered index): 한 개의 릴레이션에 여러 개의 인덱스 생성 가능.
트리 기반 인덱스: 인덱스를 저장하는 블록들이 트리 구조를 이룸.
비트맵 인덱스: 컬럼의 데이터를 0 또는 1로 변환하여 인덱스 키로 사용.
함수 기반 인덱스: 컬럼의 값 대신 특정 함수나 수식을 적용.
도메인 인덱스: 개발자가 필요한 인덱스를 직접 만들어서 사용.
2. 뷰(View) ★
2. 1. 뷰의 개념
: 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블
2. 2. 뷰의 특징
– 기본 테이블과 같은 형태의 구조를 사용.
– 가상 테이블이기 때문에 물리적으로 구현되어 있지 않음.
– 데이터의 논리적 독립성 제공
2. 3. 뷰의 장⋅단점
- 장점
– 논리적 데이터 독립성 제공.
– 사용자의 데이터 관리가 용이.
– 접근 제어를 통한 자동 보안 제공.
– 동일 데이터에 대해 동시에 여러 사용자의 요구를 지원.
- 단점
– 독립적인 인덱스를 가질 수 없음.
– 뷰의 정의를 ALTER로 변경 불가. DROP(삭제)후 CREATE(생성)해야함.
– 뷰로 구성된 내용에 대해 삽입, 삭제, 갱신 연산에 제약 존재.