[DB Study] 인덱스 활용과 튜닝
👉 클러스터링 팩터(Clustering Factior)
- 칼럼 기준 동일한 값을 갖는 데이터가 모여있는 정도(군집성 계수)
- 클러스터링 팩터가 좋다는 것은 인덱스 정렬 순서와 테이블 정렬 순서가 서로 비슷하다는 의미이다.
- Index Scan의 성능 영향을 준다.
SELECT T.TABLE_NAME
, I.INDEX_NAME
, T.BLOCKS
, T.NUM_ROWS
, I.CLUSTERING_FACTOR
FROM USER_TABLES T, USER_INDEXES I
WHERE I.TABLE_NAME = T.TABLE_NAME
AND T.TABLE_NMA IN ('비교대상_1', '비교대상_2');
👉 인덱스 비효율 판단
- 최종 결과로 집계되는 건 수(TABLE ACCESS ... A-Row)가 아래 인덱스의 데이터 추출(INDEX OOO SCAN ... A-Row)와 크게 차이가 있을때
- 추출한 건 수(A-Row)에 비해 인덱스 블록을 접근한 건 수(Buffers)가 많을때
- 무분별한 인덱스 추가는 추후에 더 큰 문제가 발생할 수 있다.
👉 기준 정보 테이블 효율 증가
SELECT T.A_COL
, T.B_COL
, I.NAME
FROM MASTER T
, CODE I
WHERE T.CD = I.CD;
- Join 대상 칼럼인 CD 뿐만 아니라 조회문에 들어가는 NAME 칼럼까지 인덱스 포함 되어있다면 명칭만을 위해 테이블에 방문하는 상황을 막을 수 있어 성능을 개선할 수 있다.
👉 인덱스 스캔 범위 계산
- 등치(=) 조건과 범위 조건이 같이 있을 경우 인덱스의 순서가 중요하다.
- 분포도가 좋은 등치 조건에 해당하는 칼럼을 우선순위로 둔다.
👉 인덱스 기본 설계 기준 및 전략
- 등치(=) 조건으로 사용되고 자주 사용되는 컬럼을 앞쪽으로 만든다.
- 등치(=) 조건으로 사용되고 값의 수가 적은 칼럼을 앞쪽으로 만든다.
- 자주 사용되는 칼럼을 선정한다.
- 테이블 랜덤 액세스를 줄인다.
- 정렬을 대신한다.
📖 참고 문헌 : 오라클 튜닝 에센셜