[SQL] 인덱스 구조

가비·2020년 12월 30일
0

[SQL]

목록 보기
8/13

인덱스란 ? '색인'이라고도 불리는 인덱스는 데이터베이스 객체 중 하나이다.

인덱스

  • 테이블에 붙여진 색인으로 검색속도가 향상된다.
  • 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다.
  • 테이블과는 별개로 독립된 데이터베이스 객체로 작성된다.
    👉 !but 테이블에 의존하는 객체로 테이블을 삭제하면 인덱스도 함께 삭제된다.

검색 알고리즘

  • 대표적으로 이진 트리(binary tree)가 있고 다음으로 해시가 유명하다.

풀 테이블 스캔(full table scan)

  • 인덱스가 지정되지 않은 테이블을 검색할 때 사용된다.
  • 테이블에 저장된 모든 값을 처음부터 차례로 조사해나간다.
  • 차례로 나열된 집합에 유효한 검색 방법으로 처음부터 차례로 조사하는 것이 아닌 집합을 반으로 나누어 조사한다.

✔️ 대량의 데이터를 검색할 때는 이진 탐색이 빠르다.

  • 풀 테이블 스캔은 데이터 수에 비례해 비교 횟수도 늘어나지만 이진 탐색은 데이터 수가 배가 되어도 비교 횟수는 1회 밖에 늘어나지 않는다.

이진 트리(binary tree)

  • 테이블에 인덱스를 작성하면 테이블 데이터와 별개로 이진 트리라는 데이터 구조로 인덱스용 데이터가 만들어진다.
  • 트리는 노드(node)라는 요소로 구성된다.
    👉 각 노드는 작은 값과 큰 값의 두 개의 가지로 나뉜다.
  • 원하는 수치와 비교하여 더 크면 오른쪽, 작으면 왼쪽 가지를 조사해 나간다.

유일성

  • 이진 트리에서는 집합 내에 중복 값을 가질 수 없다.
    !but 같은 값을 가지는 노드를 여러 개 만들 수 없다는 특성은 키에 대해 유일성을 가지게 할 경우만 유용하다.
    👉 기본키 제약은 이진 트리로 인덱스를 작성하는 데이터베이스가 많다.

0개의 댓글