개발 등/ORACLE

인덱스(Index) 전략

darkhorizon 2009. 3. 31. 11:01
728x90
반응형

결합인덱스 컬럼순서 결정
1. 항상 사용하는가?
2. 항상 '=' 로 사용되는가?
3. 분포도가 좋은 커럼 우선
4. sort 순서에 따라
5. 어떤컬럼을 추가하는가?(후보컬럼)


where 납품일자 >= :v1
수렴하는 조건은 굉장히 좋은 조건이다

OLTP

확줄어드는게 앞에 나와야한다
조건이 하나나와도 인덱스역활을 할 수 있다
멍청한넘이 나오면 인덱스 안읽어야되는것도 읽게 된다

DW
소트를 대신하는 인덱스역활


인덱스 선정 절차

1. 해당 테이블의 액세스 유형 조사
2. 대상 컬럼의 선정 및 분포도 분석
3. 반복수행되는 액세스경로(Critical Access Path)의 해결
4. 클러스터링 검토
5. 인덱스 컬럼의 조합 및 순서의 결정
6. 시험생성 및 테스트
7. 수정이 필요한 애플리케이션 조사 및 수정
8. 일괄적용

액세스 유형 조사
1. 반복 수행되는 액세스 형태를 찾는다
2. 분포도가 아주 양호한 컬럼을 찾아 액세스 유형을 찾는다
3. 자주 넓은 범위의 조건이 부여되는 경우를 찾는다 --> 클러스터를 고려해보아라
4. 자주 조건절에 사용되는 컬럼들의 액세스 유형을 찾는다
5. 자주 결합되어 사용되는 경우를 찾는다
6. SORT의 유형을 조사한다
7. 일련번호를 부여하는 경우를 찾는다
8. 통계자료추출을 위한 액세스 유형을 조사한다


INDEX의 활용(선정기준)
1. 분포도가 좋은 컬럼은 단독적으로 생성하여 활용도 향상
2. 자주 조합되어 사용되는 경우는 결합인덱스 생성
3. 각종 엑세스 경우의 수를 만족할수 있도록 인덱스간의 역할분담
4.가능한 수정이 빈번하지 않는 컬럼
5. 기본키 및 외부키 (조인의 연결고리가 되는 컬럼)
6. 결합인덱스의 컬럼순서 선정에 주의
7. 반복수행(LOOP내) 되는 조건은 가장 빠른 수행속도를 내게 할 것
8. 실제 조사된 액세스 종류를 토대로 선정 및 검증

INDEX의 활용(고려사항)
1. 새로 추가된 인덱스는 기존 액세스 경로에 영향을 미칠 수 있음
2. 지나치게 많은 인덱스는 오버헤드를 발생
3. 넓은 범위를 인덱스로 처리시 많은 오버헤드 발생
4. 옵티마이져를 위한 통계데이터를 주기적으로 갱신
5. 인덱스의 개수는 테이블의 사용형태에 따라 적절히 생성
6. 분포도가 양호한 컬럼도 처리범위에 따라 분포도가 나빠질수 있음
7. 인덱스 사용원칙을 준수해야 인덱스가 사용되어짐
8. 조인(JOIN)시에 인덱스가 사용여부에 주의


분포도가 좋다(우수하다)는 것은 서로 다른 데이터 값들이 중복없이 존재한다는 의미이다
like는 되도록 쓰면 안된다
절대 좌변을 가공하지마라 우변으로 치환해서 사용해라
양쪽다 인덱스가 있을때 조인연결고리 이상상태가 발생한 쪽으로 드라이빙된다

출처 : http://masterofcoding.tistory.com/
728x90