인덱스 설계
1. 용어
선택도 : 특정 조건에 의해 얼마나 많은 레코드가 선택되는가. (0 과 1 사이의 비율)
카디널리티 : 선택도 * 전체 rows = 한번 선택시 조회되는 row
NDV : number of distinct value
ex) 20명 합급의 '성별' 컬럼. 남학생 12명과 여학생 8명이 있다면
- NDV(카디널리티) : 2
- 선택도(여학생) : 8/20 (기본공식)
1/NDV => 1/2 (고유값 기반)
2. 인덱스 설계 기준
- 전체적인 시각에서 고려, 각각의 최적화 아닌 전체의 최적화
- 중복 인덱스 제거
- 인덱스 추가 장점 : 조회가 빨라진다.
- 인덱스 추가 단점 : 기존 SQL 이 영향을 받아 플랜이 바뀌는 경우가 생기기도 한다.
1 row 가 insert 될때마다 인덱스에 대한 추가 작업이 발생하므로 DML 성능에 영향을 줄 수있다
# 신규 프로젝트의 인덱스 생성의 원칙 :
- PK, FK (필요한 경우) 인덱스만 생성.
- 복합보단 단일키 인덱스 우선 생성
- 성능이 문제될경우만 세컨더리 인덱스 추가, 불가피한 경우 복합, 슈퍼키 사용도 고려
3. 인덱스 구성 기준
필수 + 선택
일자가 좁으면 일자 우선도 고려
4. 정렬 없애기
인덱스 컬럼에 선두 혹은 '=' 조건 이후.
5. 클러스터링 팩터
인덱스 정렬 순서와 실제 데이터 블록 저장 순서가 얼마나 일치하는지 나타내는 지표.
인덱스 탐색의 비용은 동일하지만 테이블의 정렬도에 따라 테이블 탐색 비용이 달라짐.
'생계 > 튜닝' 카테고리의 다른 글
| 튜닝 프로젝트 자주 조회 (0) | 2025.10.28 |
|---|---|
| 클러스터링 팩터 인덱스 블럭 스플릿 (0) | 2025.10.17 |
| 오라클 adaptive cursor sharing (ACS) 정리 (0) | 2025.06.21 |
| 튜닝에 대한 생각 (0) | 2025.03.05 |
| [oracle] 소프트파싱 과 하드파싱 (0) | 2024.12.11 |
