인덱스 스캔

인덱스 유일스캔 (Index Unique Scan)

  • 단 하나의 ROWID를 추출함.
  • 인덱스가 기본키나 Unique Index로 생성되어 있어야 함.
  • 구성된 모든 컬럼이 조건절에서 '='로 비교되어야 함.

인덱스 범위스캔 (Index Range Scan)

  • 가장 보편적인 데이터 액세스 형태.
  • 시작점을 찾을땐 랜덤엑세스, 그 이후부터 종료시까지는 스캔을 함.

인덱스 역순범위스캔(Index Range Scan Descending)

  • 인덱스 범위스캔과 엑세스 형태는 동일하나 역순으로 데이터를 액세스 한다.
  • ORDER BY ~ DESC 를 사용하거나 INDEX_DESC 힌트를 사용하여 적용함.

인덱스 스킵스캔 (Index Skip Scan)

  • 인덱스의 선행 컬럼이 사용되지 않더라도 상위의 각각 분기된 가지별로 주어진 조건 컬럼을 스캔.
    인덱스스킵스캔 예제

인덱스 전체스캔 (Index Full Scan)

  • 조건절에서 그 인덱스 컬럼이 적어도 하나 이상 사용되었을때 적용이 가능.
  • 쿼리내에 사용된 어떤 테이블들의 모든 컬럼들이 그 인덱스에 모두 존재하고,
  • 인덱스 컬럼 중에서 최소한 NOT NULL인 컬럼이 하나는 존재할때
    인덱스전체스캔 예제

인덱스 고속 전체스캔 (Index Fast Full Scan)

  • 쿼리를 위해 사용한 어떤 테이블의 컬럼이 모두 그 인덱스에 포함되어 있을때 전체 테이블스캔의 대안으로 사용한다.
  • 비트맵 인덱스에는 적용할 수 없다.
  • INDEX_FFS / NO_INDEX_FFS 힌트로 조절 가능하다.
    인덱스고속스캔 예제

인덱스 조인

  • p235 에서 다룸

비트맵 인덱스