Woopii Vyeolog

[DB] Index란? 본문

DB,SQL

[DB] Index란?

WooPii 2020. 2. 24. 19:40

한 권의 책을 예시로 들어본다. (table 이름은 'book' 이다.)

 

당연히 책 안의 내용은 DB의 데이터가 된다.

 

그리고 책의 페이지는 데이터가 저장된 레코드 주소가 될 것이다.(ID)

 

DBMS에서 원하는 데이터 결과를 가져오려면, 

 

첫 페이지에서, 마지막 페이지까지 모든 페이지를 검색한다.(Full scan)

 

 PAGE           TITLE

001              A

002              A

003              A

.........

099              A

100              B

101              B

102              B

..........

199              B

200              C

201              C

202              C

........

299              C

 

위처럼 구성된 책에서 'B'만을 검색하려고 하면

 

Select page
From book
where title = 'B';

1번 페이지부터 계속 검색을 해서 100페이지 째에서 B를 검색하고 

 

마지막 페이지까지 B가 있나 검색한다.

 

즉, Fullscan 은 테이블의 전체 데이터를 조회하는 것이다.

 

데이터가 적다면 괜찮겠지만 데이터의 수가 많다면 성능에 문제가 생길 수 있다. 

 

그래서 필요한 것이 Index이다.

 

Index의 생성은 아래와 같이 한다.

 

Create Index index_title ON book(title);

 

위와 같이 Index를 생성하면 book 테이블의 title 컬럼에 index가 생성된다.

 

인덱스 확인은 아래 명령어로 볼 수 있다.

 

Show index from book;

 

Index는 문자열 순서대로 정렬되어있기 때문에,

 

‘B’ 라는 문자열을 계속 검색하다가 ‘B’ 라는 문자열을 만나는 순간

 

이제 더이상 ‘B’ 라는 문자열을 존재하지 않는다고 단정짓고 탐색을 종료할 수 있다.

 

게다가 내부적으로 데이터를 B-Tree라는 구조에 저장하기 때문에,

 

‘B’라는 문자열을 찾아낼 때 맨 처음부터 순차적으로 조회하는 것 보다 훨씬 빠르다.

'DB,SQL' 카테고리의 다른 글

[SQL] 03. 테이블에서 데이터 검색하기  (0) 2023.07.01
[SQL] 02. 테이블의 구조 - DESC  (0) 2023.07.01
[SQL] 01. SQL 기초  (0) 2023.07.01
Connection pool  (0) 2020.02.17
DB연동을 위한Ubuntu Linux Mysql 설치, 설정  (0) 2020.01.31
Comments