RDBS/MYSQL

[MYSQL]INDEX란?

MoonSta 2023. 1. 2. 08:54

⚡️INDEX란?

 수많은 데이터가 존재하는 테이블에서 원하는 데이터를 쉽고 빠르게 찾기 위해 INDEX를 사용합니다. 즉, 특정 컬럼에 색인을 주어 검색 속도를 향상하기 위해 사용합니다. 이번 포스팅에서는 INDEX를 사용하는 이유 및 어떤 원리로 검색 속도가 향상되는지 알아보도록 하겠습니다.

 

 

⚡️인덱스(INDEX)를 사용해야 하는 이유

 보통의 관계형 데이터베이스는 영속이라는 목표를 갖고 있다. 왜냐하면 데이터베이스의 저장되는 데이터는 기록이 되어야 하기 때문이다. 하지만 인덱스(INDEX)를 사용하지 않고도 기록이 되는 데 굳이 필요한가에 대한 의문도 같이 생기기 마련이다. 하지만 저장된 데이터 중 필요한 데이터만 조회를 할 때 좋은 서비스를 제공하기 위하여는 빠른 처리 속도가 필요하다. 즉 속도가 더딘 서비스를 제공받는 입장에서는 원치 않기 때문이다. 위와 같은 이유로 대량의 데이터를 처리하는 경우에는 인덱스(INDEX)의 사용이 꼭 필요하다.

 

⚡️풀 스캔( Full Scan) vs 레인지 스캔(Range Scan)

 인덱스(INDEX)에 대한 실습을 진행하기 전에 풀 스캔(Full Scan)과 레인지 스캔(Range Scan)에 대하여 먼저 알아 둘 필요가 있다. 인덱스를 사용하지 않은 테이블에서 데이터를 조회하는 경우 다음과 같다.  

 

⚡️풀 스캔( Full Scan) 

1    
2    
3    

 풀 스캔(Full Scan)처럼 테이블의 모든 레코드를 처음부터 끝까지 읽는다. 이와 같은 방식으로 스캔을 하게 되면 레코드의 수가 늘어나면 늘어날수록 조회를 처리하는 시간이 길어진다. 

 

 

⚡️레인지 스캔(Range Scan)

     
1    
2    
     

 레인지 스캔(Range Scan)을 사용하면 지정한 범위에서만 스캔을 하기 때문에 당연히 조회에 필요한 시간이 풀 스캔 시보다 현저하게 줄어들 것이다.  데이터베이스의 레인지 스캔을 하기 위해서는 책의 목차와 같은 인덱스(INDEX)가 필요하다. 물론 공부하다 보니 분명 인덱스(INDEX)의 단점도 분명히 있다. 하지만 적재적소에 테이블에 맞춰 사용한다면, 효과는 극대화가 될 것이라고 생각한다. 


⚡️ 정리

 오늘은 인덱스(INDEX)에 대해 알아보았다. 사실 인덱스(INDEX)에 대한 개념이 잘 잡혀 있지 않았고, 학습해야 양이 엄청나기 때문에 오늘은 인덱스에 대한 원리와 기본적인 내용만 다루어 보았다. 다음에 학습을 더 하고 나서 다음 글을 포스팅하도록 하겠습니다. 감사합니다.