인덱스
디스크 읽기 방식
- 랜덤 I/O, 순차 I/O
-
Primary Key, Seccondary Key
- B-Tree 인덱스
- Hash 인덱스
- Fractal-Tree 인덱스, Merge-Tree 인덱스
- 쿼리튜닝으로 랜덤 I/O를 순차 I/O로 바꿔서 실행하는 방법은 그다지 많지 않음
인덱스란?
- SortedList, ArrayList
- 데이터를 관리하는 방식과 중복 값 허용 여부 등에 따라 구분
- 프라이머리 키
- 세컨더리 인덱스(프라이머리 키를 지외한 인덱스)
B-Tree 인덱스
- 가장 일반적인 인덱싱 알고리즘
- DBMS에서는 주로 변형된 형태인 B+-Tree 또는 B*-Tree가 사용됨
- “B”는 “Binary”가 아닌 “Balanced”
구조 및 특성
- Root node, Leaf Node, Branch Node
- Leaf Node에 데이터의 주소값이 존재
-
인덱스의 키값은 정렬되어있음, 데이터 파일의 레코드는 정렬되어있지 않음
- 키 추가/삭제/변경/검색
- 영향을 미치는 요소
- 인덱스 키 값의 크기
- B-Tree 깊이
- 선택도(기수성)
- 읽어야 하는 레코드의 건수
- 데이터 읽기
- 정렬 및 스캔 방향
R-Tree 인덱스
전문 검색 인덱스
함수 기반 인덱스
멀티 밸류 인덱스
클러스터링 인덱스
유니크 인덱스
외래키
References
- Real MySQL 8.0 (1권)