Unique-index-scan VS Range-scan

twocowsong·2023년 7월 1일

SQL

목록 보기
2/2

Unique index scan과 Range scan은 데이터베이스에서 인덱스를 이용하여 데이터를 검색하는 방법 중 두 가지 다른 접근 방식입니다.

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

Unique index scan은 인덱스가 고유(unique)한 값을 갖는 경우에 사용됩니다.
이는 주로 기본 키(primary key) 또는 유니크 제약 조건(unique constraint)이 설정된 컬럼에 대한 인덱스에서 사용됩니다.

  • 서브 쿼리로 a테이블에 기본키 조건으로 Unique Index Scan이 사용됐다는걸 확인 할 수 있습니다.

Unique index scan은 특정 값을 기반으로 정확히 하나의 행을 찾는 데 사용됩니다.
주어진 값에 해당하는 행이 인덱스에 존재한다면 해당 행을 직접 찾아가므로 검색 속도가 매우 빠릅니다.

Range Scan (범위 스캔)

Range scan은 인덱스의 범위를 탐색하면서 조건에 맞는 여러 행을 찾는 데 사용됩니다.
주로 범위 조건(>, <, BETWEEN 등)을 포함하는 쿼리에서 사용됩니다.

Range scan은 인덱스의 시작 지점부터 끝 지점까지 연속적으로 특정 범위를 스캔하면서 조건에 맞는 행을 찾습니다.

Range scan은 범위에 해당하는 여러 행을 찾아야 하기 때문에 고유 인덱스 스캔보다는 더 많은 I/O 비용과 처리 시간이 소요될 수 있습니다.

추가 정리

범위 스캔 시 Raw Desc 에 정의 된 언어

  • Using index condition : 인덱스를 사용하여 필터링 조건을 평가, 인덱스를 이용하여 WHERE 절의 조건을 처리하는 데 사용되는 것을 의미
  • Using where : MySQL이 인덱스를 사용하지 않고 테이블의 전체 데이터를 스캔하여 조건을 평가, "Using where"가 표시되면 데이터베이스가 인덱스를 효과적으로 활용하지 못하고 성능 저하가 발생할 수 있습니다.
  • LooseScan : MySQL이 인덱스를 사용하여 데이터를 검색하지만, 인덱스의 정확한 일치가 아닌 근사치로 검색하는 것을 표현
profile
null null null null

0개의 댓글