Dev/Database

[Oracle/MSSQL] 인덱스 종류, 인덱스 종류별 속도, 인덱스 스캔 종류, 인덱스 스캔 종류별 속도

알굼 2024. 7. 9. 08:32
반응형

인덱스 스캔?

데이터베이스의 옵티마이저가 데이터를 효율적으로 검색하기 위한 탐색 방법
 
  1. Unique Index Scan (유일 인덱스 스캔)
    • 유일한 값만을 찾기 때문에 가장 빠름.
    • 유일한 인덱스가 적용된 컬럼에 대해 특정 값을 조회할 때 사용
      ex) SELECT * FROM table WHERE unique_column = 'value'
  2. Index Range Scan (인덱스 범위 스캔)
    • 인덱스의 특정 범위 내에서 여러 행을 찾을 때 사용.
    • 일반적으로 조건절에 범위 조건이 포함될 때 사용
      ex) SELECT * FROM table WHERE indexed_column BETWEEN 'value1' AND 'value2'
  3. Index Skip Scan (인덱스 스킵 스캔)
    • 인덱스의 선행 컬럼이 조건에 포함되지 않았을 때 사용
    • 인덱스의 일부 컬럼을 건너뛰고 후속 컬럼을 사용하여 검색
    • ex) SELECT * FROM table WHERE indexed_column2 = 'value' (indexed_column1은 조건에 포함되지 않음)
  4. Index Full Scan (인덱스 풀 스캔)
    • 인덱스 전체를 순차적으로 스캔
    • 주로 인덱스의 선행 컬럼 조건이 없거나, 인덱스 전체에 대한 접근이 필요한 경우 사용
    • ex) SELECT * FROM table WHERE non_indexed_column = 'value'
  5. Index Fast Full Scan (인덱스 패스트 풀 스캔)
    • 인덱스의 전체 데이터를 빠르게 스캔.
    • 테이블 전체 스캔 대신 사용되며, 모든 인덱스 컬럼에 접근해야 하는 경우에 유용함.
    • ex) SELECT indexed_column1, indexed_column2 FROM table
  6. Index Join Scan (인덱스 조인 스캔)
    • 여러 인덱스를 조인하여 데이터 검색
    • 주로 복합 인덱스를 사용할 수 없는 경우 사용됨
    • ex) SELECT * FROM table WHERE indexed_column1 = 'value1' AND indexed_column2 = 'value2'
  7. Index Block Scan (인덱스 블록 스캔)
    • 인덱스의 블록을 한 번에 읽어들이는 방식으로 대량의 데이터에 접근할 때 사용.
    • 특정 데이터베이스 시스템에서만 사용 가능

 

반응형