반응형
인덱스(Index)
  • 인덱스는 데이터를 빠르게 검색할 수 있는 방법을 제공한다.
  • 인덱스는 인덱스 키로 정렬되어 있기 때문에 원하는 데이터를 빠르게 조회한다.
  • 인덱스는 오름차순 및 내림차순으로 탐색이 가능하다.
  • 하나의 테이블에 여러 개의 인덱스를 생성할 수 있고 하나의 인덱스는 여러 개의 칼럼으로 구성될 수 있다.
  • 테이블을 생성할 때 기본키는 자동으로 인덱스가 만들어지고 인덱스의 이름은 SYSXXXX이다.
  • 인덱스의 구조는 Root Block, Branch Block, Leaf Block으로 구성되고 Root Block인덱스 트리에서 가장 상위에 있는 노드를 의미하며 Branch Block다음 단계의 주소를 가지고 있는 포인터(Pointer)로 되어 있다.
  • Leaf Block은 인덱스 키와 ROWID로 구성되고 인덱스 키는 정렬되어서 저장되어 있다.
  • Leaf Block은 Double Linked List 형태로 되어 있어서 양방향 탐색이 가능하다.
  • Leaf Block에서 인덱스 키를 읽으면 ROWID를 사용해서 EMP테이블의 행을 직접 읽을 수 있다.
인덱스 생성
  • 인덱스 생성은 'CREATE INDEX' 문을 사용해서 생성이 가능하다.
  • 인덱스를 생성할 때는 한 개 이상의 칼럼을 사용해서 생성할 수 있다.
  • 인덱스 키는 기본적으로 오름차순으로 정렬하고 'DESC'구를 포함하면 내림차순으로 정렬한다.
  • 'ASC'구는 생략이 가능하다.
인덱스 스캔

(1) 인덱스 유일 스캔(Index Unique SCAN)

  • Unique Index SCAN은 인덱스 키 값이 중복되지 않는 경우, 해당 인덱스를 사용할 때 발생된다.

(2) 인덱스 범위 스캔(Index Range SCAN)

  • Index Range SCAN은 SELECT에서 특정 범위를 조회하는 WHERE문을 사용할 경우 발생한다.
  • Like, Between이 그 대표적인 예이다. 물론 데이터 양이 적은 경우는 인덱스 자체를 실행하지 않고 TABLE FULL SCAN이 될 수 있다.
  • Index Range SCAN은 인덱스의 Leaf Block의 특정범위를 스캔한 것이다.

(3) 인덱스 전체 스캔(Index Full SCAN)

  • Index Full SCAN은 인덱스에서 검색되는 키가 많은경우에 Leaf Block의 처음부터 끝까지 전체를 읽어 들인다.
Table Full Scan 시에 High Watermark의 의미

Table Full Scan은 테이블의 데이터를 모두 읽은것을 의미한다.

테이블을 읽을 때 High Watermark이하까지만 Table Full Scan을한다.

HighWatermark는 테이블에데이터가 저장된 블록에서 최상위 위치를 의미하고 데이터가 삭제되면 High Watermark가 변경된다.

반응형

+ Recent posts