인덱스 구조

유석현(SeokHyun Yu)·2022년 8월 16일
0

SQL

목록 보기
28/45
post-thumbnail

서론

테이블에는 '인덱스'를 작성할 수 있다.

인덱스를 지정하면 어떤 효과가 있는지, 또한 그러한 효과를 얻을 수 있는 이유는 무엇인지에 관해 설명하겠다.


1. 인덱스

인덱스는 테이블에 붙여진 색인이라고 할 수 있다.

인덱스의 역할은 검색속도의 향상이다.

여기서 '검색'이란 SELECT 명령에 WHERE 구로 조건을 지정하고 그에 일치하는 행을 찾는 일련의 과정을 말한다.

검색은 탐색이라고도 불린다.

테이블에 인덱스가 지정되어 있으면 효율적으로 검색할 수 있으므로 WHERE로 조건이 지정된 SELECT 명령의 처리 속도가 향상된다.

책의 목차가 인덱스라고 생각하면 이해하기 쉽다.

책 안에 있는 특정 부분을 찾고 싶은 경우, 본문을 처음부터 읽어나가기보다 목차를 참고해서 찾는 편이 효율적이다.

인덱스가 바로 이런 역할을 한다.

한편 인덱스는 테이블과는 별개로 독립된 데이터베이스 객체로 작성된다.

하지만 인덱스만으로는 아무런 의미가 없다.

목차밖에 없는 책은 본 적이 없는 것처럼, 인덱스는 테이블에 의존하는 객체라 할 수 있다.

대부분의 데이터베이스에서 테이블을 삭제하면 인덱스도 같이 삭제된다.


2. 검색에 사용하는 알고리즘

대량의 데이터를 효율적으로 검색하는 방법에 관해서는 예전부터 여러 가지로 연구되어 왔다.

데이터 탐색이라든가 검색 알고리즘 등이 그에 해당한다.

데이터베이스 인덱스에 쓰이는 대표적인 검색 알고리즘으로는 '이진 탐색 트리(Binary Search Tree)'가 있으며, 그 다음으로 '해시'가 유명하다.

이진 탐색 트리는 정확히 말하면 탐색 방법이라기보다 데이터 구조에 가깝다.

탐색 방법으로 말하자면 '이진 탐색(binary search)'이 된다.

블로그에 이진 탐색 트리와 이진 탐색에 대해 정리해놓은 글이 있으니 참고하길 바란다.

https://velog.io/@fkstndnjs/%ED%83%90%EC%83%89Search-1


3. 유일성

이진 탐색 트리는 집합 내에 중복하는 값을 가질 수 없다.

그래서 '기본키 제약(PRIMARY KEY)'이 걸려있는 열은 이진 탐색 트리로 인덱스를 작성하는 데이터베이스가 많다.

profile
Backend Engineer

0개의 댓글