생계/튜닝2025. 6. 22. 13:59
반응형

 인덱스 설계 

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. 클러스터링 팩터

인덱스 정렬 순서와 실제 데이터 블록 저장 순서가 얼마나 일치하는지 나타내는 지표.

인덱스 탐색의 비용은 동일하지만 테이블의 정렬도에 따라 테이블 탐색 비용이 달라짐.

 클러스터링 팩터

 

 

 

 

 

 

반응형
Posted by 돌고래트레이너