철학과 학생의 개발자 도전기
인덱스 본문
1. 인덱스란
- 데이터 검색 속도를 향상시키기 위한 자료구조
- 특정 속성의 값과 해당 레코드의 위치를 매핑하여, 데이터를 빠르게 찾을 수 있다.
- B-트리를 사용하여 O(logN)의 시간복잡도로 탐색이 가능하다.
- 추가적인 저장 공간을 필요로 하며 데이터 삽입, 수정, 삭제 시 시간이 더 많이 소요된다.
2. 클러스터형 인덱스
- 테이블 당 1개만 생성 가능
- 클러스터가 적용된 속성을 기준으로 데이터가 정렬됨
- PK는 자동으로 클러스터형 인덱스 역할 수행
데이터는 페이지에 들어가게 되며, 각 페이지는 MySQL 기준 16kbyte이다. (페이지 = 노드)
페이지의 용량을 넘게 되면 B-트리의 분할을 수행한다.
3. 보조 인덱스
- 테이블 당 여러개 생성 가능
- 실제 데이터를 가르키는 인덱스 페이지 생성
- 데이터 자체가 정렬되지 않고, 인덱스 페이지만 정렬됨
4. 클러스터형 인덱스 VS 보조 인덱스
- 데이터 검색은 클러스터형 인덱스가 더 빠르다.
- 클러스터형 인덱스: 루트페이지 -> 리프페이지 (2번의 페이지 참조)
- 보조 인덱스: 루트페이지 -> 리프페이지 -> 데이터페이지 (3번의 페이지 참조)
- 데이터 삽입, 수정, 삭제는 보조 인덱스가 더 빠르다.
- 클러스터형 인덱스: 실제 데이터를 정렬하므로 시간이 오래 걸림
- 보조 인덱스: 인덱스 페이지만 정렬하므로 더 빠름
'데이터베이스' 카테고리의 다른 글
옵티마이저 (0) | 2023.11.05 |
---|---|
Lock과 MVCC (0) | 2023.11.05 |
트랜잭션 (0) | 2023.10.29 |
이상과 정규화 (0) | 2023.10.27 |
DBMS와 RDB의 키 (0) | 2023.10.19 |