⚡️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)에 대한 개념이 잘 잡혀 있지 않았고, 학습해야 양이 엄청나기 때문에 오늘은 인덱스에 대한 원리와 기본적인 내용만 다루어 보았다. 다음에 학습을 더 하고 나서 다음 글을 포스팅하도록 하겠습니다. 감사합니다.
'RDBS > MYSQL' 카테고리의 다른 글
[MYSQL]INSERT - 여러 건 삽입 (12) | 2023.01.09 |
---|---|
[프로그래머스]입양 시각 구하기(1)-MySQL (9) | 2023.01.07 |
[MYSQL]USING과 ON의 차이 (6) | 2023.01.05 |
[MYSQL]윈도우함수(Window Function) (5) | 2023.01.03 |
[MYSQL]ROWNUM 이용한 데이터 번호 매기기 (1) | 2022.12.14 |