INDEX FULL SCAN

.·2024년 4월 24일
0

ORACLE

목록 보기
8/8

1. TABLE FULL SCAN

  • 테이블을 처음부터 끝까지 다 스캔하면서 데이터 검색
  • 인덱스가 없다면 조건에 맞는 데이터를 찾기 위해 테이블을 처음부터 끝까지 스캔

2. 단일 컬럼 인덱스

  • 단일 컬럼 인덱스 : 컬럼 하나에만 거는 인덱스
SELECT SAL, ENAME
FROM EMP
WHERE SAL = 3000;
  • 이 경우 NON-UNIQUE INDEX이기 때문에 INDEX RANGE SCAN
  • 인덱스 테이블에서 조건에 맞는 ROWID들을 찾고
  • 인덱스 테이블의 컬럼들만으로는 원하는 컬럼을 모두 조회할 수 없기 때문에
    그 ROWID로 원본테이블에서 찾아서 추가 컬럼 조회 (TABLE ACCESS)

3. 결합 컬럼 인덱스

  • 결합 컬럼 인덱스 : 여러 컬럼에 거는 인덱스
SELECT SAL, ENAME
FROM EMP
WHERE SAL = 3000;
  • 이 경우 NON-UNIQUE INDEX이기 때문에 INDEX RANGE SCAN
  • 인덱스 테이블에서 조건에 맞는 ROWID를 찾고
  • 인덱스 테이블에 찾고자 하는 컬럼이 모두 있기 때문에
    인덱스 테이블에서만 컬럼 조회
  • TABLE ACCESS하지 않기 때문에 성능 향상

4. INDEX FULL SCAN

  • 결합 컬럼 인덱스의 첫번째 컬럼이 아닌 컬럼의 데이터를 검색 시 인덱스 전체를 스캔하면서 원하는 데이터를 검색
SELECT ENAME, SAL, JOB
FROM EMP
WHERE ENAME = 'JONES';
  • 결합 컬럼 인덱스를 사용하려면 인덱스의 첫번째 컬럼이 WHERE절의 조건으로 사용되어야 함
  • 결합 컬럼 인덱스는 첫번째 컬럼, 두번째 컬럼, ... 순으로 정렬되어 있음
  • 결합 컬럼 인덱스의 첫번째 컬럼이 아닌 컬럼으로 WHERE절의 조건으로 사용되면 해당 컬럼부터 정렬된 것이 아니기 때문에 INDEX FULL SCAN
  • 인덱스 테이블이 원본 테이블보다는 사이즈가 작기 때문에 INDEX FULL SCAN이 TABLE FULL SCAN보다는 빠름

[이지업클래스] 실무에서 바로 쓰는 SQL 튜닝법 수강 후 정리한 내용입니다.

0개의 댓글