Data

[1028 SQL]Ⅲ. SQL 고급 활용 및 튜닝-제3장 인덱스 튜닝

제3장 인덱스 튜닝
제1절 인덱스 기본 원리
제2절 테이블 액세스 최소화
제3절 인덱스 스캔 효율화
제4절 인덱스 설계

인덱스 특정컬럼에 대해 빠르게 검색할수 있도록 도와주는 데이터 구조
색인을 제공하여 B-트리나 비트냅구조로 구현
  종류

SELECT
   INDEX_NAME
  ,INDEX_TYPE
FROM DBA_INDEXES
B-tree 인덱스 기본 데이터가 정렬된 상태로 유지
- oracle  index_type : NORMAL
  비트맵 인덱스 작은 카디널리티(데이터종류)를 가진 컬럼에 적합
  해시 인덱스 범위검색에는 부적합
  함수기반인덱스 컬럼의 함수결과 인덱스 생성, 함수기반검색지원
  장단점 장점 1. 검색속도 향상
2. 쿼리 성능개선
3. 특정조건 효율적 접근
  단점 1. 쓰기(insert, update, delete)시 성능저하
2. 인덱스관리 복잡성 증가.
3. 디스크 공간소모
  인덱스 리빌딩 인덱스 조각, 성능저화  ALTER INDEX idx_emp_dept REBUILD;
테이블 접근 최소화 1. 인덱스 활용 where, join, order by , group by  자주 사용되는 컬럼에 인덱스 추가. 
2. 커버링 인덱스  쿼리에서 요구하는 모든 데이터가 인덱스에 포함되도록. 
3. 정규화 중복데이터 줄임
4. 복합인덱스  
인덱스 스캔 효율화 1. 인덱스 범위 스캔 범위값을 조회하는 방식 between, >=, <=  조건에서 사용
2. 인덱스 전역스캔 모든 항목스캔, 조건에 맞는 항목찾음
3. 인덱스 힌트  
4. 조인최적화 조인연산 사용컬럼 인덱스 추가
5. 다중컬럼인덱스  
인덱스 설계 1. 쿼리분석 자주 실행되는 쿼리, 사용컬럼
2. 비용-이익분석 읽기 성능향상, 쓰기 성능저하비교 
3. 주요쿼리 가장 자주사용하는 컬럼에 추가. 
4. 인덱스 유지보수 정기적으로 인덱스 점검, 필요없는 인덱스 제거.
5. 부가인덱스 쿼리 성능향상, 디스크공간, 오버헤드 고려. 
6. 데이터베이스 통계 업데이트  EXEC DBMS_STATS.GATHER_TABLE_STATS('schema', 'employees');