인덱스란 ? '색인'이라고도 불리는 인덱스는 데이터베이스 객체 중 하나이다.
인덱스
- 테이블에 붙여진 색인으로 검색속도가 향상된다.
- 검색 시에 쓰이는 키워드와 대응하는 데이터 행의 장소가 저장되어 있다.
- 테이블과는 별개로 독립된 데이터베이스 객체로 작성된다.
👉 !but
테이블에 의존하는 객체로 테이블을 삭제하면 인덱스도 함께 삭제된다.
검색 알고리즘
- 대표적으로 이진 트리(binary tree)가 있고 다음으로 해시가 유명하다.
풀 테이블 스캔(full table scan)
- 인덱스가 지정되지 않은 테이블을 검색할 때 사용된다.
- 테이블에 저장된 모든 값을 처음부터 차례로 조사해나간다.
이진 탐색(binary search)
- 차례로 나열된 집합에 유효한 검색 방법으로 처음부터 차례로 조사하는 것이 아닌 집합을 반으로 나누어 조사한다.
✔️ 대량의 데이터를 검색할 때는 이진 탐색이 빠르다.
- 풀 테이블 스캔은 데이터 수에 비례해 비교 횟수도 늘어나지만 이진 탐색은 데이터 수가 배가 되어도 비교 횟수는 1회 밖에 늘어나지 않는다.
이진 트리(binary tree)
- 테이블에 인덱스를 작성하면 테이블 데이터와 별개로 이진 트리라는 데이터 구조로 인덱스용 데이터가 만들어진다.
- 트리는 노드(node)라는 요소로 구성된다.
👉 각 노드는 작은 값과 큰 값의 두 개의 가지로 나뉜다.
- 원하는 수치와 비교하여 더 크면 오른쪽, 작으면 왼쪽 가지를 조사해 나간다.
유일성
- 이진 트리에서는 집합 내에 중복 값을 가질 수 없다.
!but
같은 값을 가지는 노드를 여러 개 만들 수 없다는 특성은 키에 대해 유일성을 가지게 할 경우만 유용하다.
👉 기본키 제약은 이진 트리로 인덱스를 작성하는 데이터베이스가 많다.