4.5 인덱스
4.5.1 인덱스의 필요성
데이터를 빠르게 찾을 수 있는 하나의 장치
인덱스를 설정하면 테이블 안에 내가 찾고자 하는 데이터를 빠르게 찾을 수 있다.
4.5.2 B-트리
인덱스는 보통 B-트리라는 자료 구조로 이루어져 있다.
데이터가 있을 법한 리프 노드로 들어가 탐색하면 쉽게 찾을 수 있다.
인덱스가 효율적인 이유와 대수확장성
- 인덱스가 효율적인 이유
- 모든 요소에 접근할 수 있는 균형 잡힌 트리구조와 트리 깊이의 대수확장성 때문
- 대수확장성
- 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것
- 인덱스가 한 깊이씩 증가할 때 최대 인덱스 항목의 수는 4배씩 증가
4.5.3 인덱스 만드는 방법
MySQL
- 클러스터형 인덱스
- 테이블당 하나 설정 가능
- PK 옵션으로 기본키로 생성 가능
- unique not null 옵션으로 생성 가능
- 세컨더리 인덱스
- create index 명령어 기반 생성 가능
- 보조 인덱스로 여러 개의 필드 값을 기반으로 쿼리 많이 보낼 때 생성 필요
MongoDB
- 자동 ObjectID 형성 → 기본키
- 세컨더리키도 부가적으로 설정해 기본키와 같이 복합 인덱스 설정 가능