- 데이터를 정렬하여 탐색 속도를 빠르게 한다!
- 트리의 높이가 같다.
- 자식 노드를 2개 이상 가질 수 있다.
- 각 노드 - 1 페이지(8kB)의 데이터 용량 차지
- 루트 페이지 : 자식 페이지의 범위 정보와, 자식 페이지 주소
- 브랜치 페이지 : 자식 페이지의 범위 정보와, 자식 페이지 주소
- 리프 페이지 : 실제 데이터 페이지 or 실제 데이터의 주소 페이지
장점
- 조회 성능 향상
단점
- 불필요한 처리량 증가
- 페이지 낭비, 인덱스 조각화
- 해당 영역의 페이지에 빈 공간이 있는 경우, 빈 공간에 데이터를 저장한다.
- 해당 영역의 페이지가 꽉 찬 경우 -> 페이지 분할
- 빈 페이지 생성
- 기존 페이지와 새 페이지의 데이터를 나누어 저장
- 실제 컬럼 삭제 x, 대신 비활성화한다.
- delete 후 insert
- clustering index : 실제 데이터를 정렬
- non-clustering index : 실제 데이터와 별도로 정렬
- primary key가 있는 경우
- unique + not null인 컬럼이 있는 경우
- unique 컬럼인 경우 자동 생성됨
- 수동으로 생성하기
CREATE UNIQUE INDEX index_name ON member (name)
CREATE INDEX index_name ON member (name)
- Cardinality : 중복도 낮은 데이터
- good : 전화번호, id 등
- bad : 성별, 학년 등
WHERE JOIN ORDER BY
자주 발생- INSERT UPDATE DELETE 적은
- 규모가 큰