IT지식/Computer Science

데이터베이스 인덱스 효율적으로 사용하는 방법

맨땅에헤딩개발자 2025. 2. 2. 19:41

기본적으로 인덱스란 무엇인가에 대한 개념을 잡고오면 도움이 됩니다.

https://steady-snb.tistory.com/7

 

데이터베이스 인덱스(INDEX)란?

테이블에 대한 검색 성능을 높혀주기 위한 자료구조이다. 예를들어, 00도서관에서 책을 찾으려고 한다.00도서관에는 책이 10만권이 넘게 있는데 우리는 그 책들을 일일이 하나씩 뒤져볼 수 없다.

steady-snb.tistory.com

 

인덱스를 잘 사용하면 조회 성능이 보다 빠르지만 잘 못 사용하면 오히려 처음보다 느려지는 역효과를 야기할 수 있습니다.

그렇다면 인덱스는 어떻게 돌아가는 원리이며 무슨 조건으로 사용해야 보다 효율적으로 사용할 수 있는가 알아봅시다.

 

 

인덱스가 돌아가는 구조

 

기본적으로 데이터베이스에서 인덱스라 하면 B-트리 구조가 일반적입니다.

B-트리라 하면 이진트리와는 다르게 한 노드에 N개의 자식을 가질 수 있는 자료구조입니다.

 

B-트리의 특징

 

1. 모든 리프노드들은 같은 레벨에 있으며 각 데이터와 매칭되는 포인터를 가지고 있습니다.

2. 차수라는것은 한 노드가 가질 수 있는 최대 자식 수를 의미합니다.

3. 부모 노드로 부터 자식노드의 왼쪽은 작은 수 오른쪽은 같거나 큰 수만 들어갈 수 있습니다.

4. 노드는 삽입,삭제에 따라 분할 또는 인접 노드와 병합이 가능합니다.

 

 

쿼리 실행 시 걸리는 시간 체크

 

explain함수를 통해 쿼리 실행 속도를 체크할 수 있습니다.

ex)

EXPLAIN

SELECT *

   FROM TABLE

WHERE COLUMN = '000';

 

 

인덱스를 효율적으로 거는 조건

 

1. 조건 중 == 이나 equal로 비교하는 컬럼이 있으면 가장 먼저 인덱스로 설정하는게 좋습니다.

2. order by 등 과 같은 정렬에 들어가는 필드가 있다면 그 다음 인덱스로 설정하는게 좋습니다.

3. 다중 값 출력 in이나 '<', '>', between 등 과 같은 많은 값을 출력해야 할 경우 다음 인덱스로 설정하는게 좋습니다.

4. 마지막으로 유니크한 값을 정도가 높은 순서대로 설정하면 좋습니다.

   예를들어, 생일과 주민번호 둘 중 하나의 인덱스를 걸어야 한다면 생일은 겹칠 가능성이 있지만 주민번호는 생일보다

   더 유니크하기에 주민번호로 인덱스를 걸어주는게 더 효율적입니다.

 

 

 

출처 - https://www.inflearn.com/course/%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%A9%B4%EC%A0%91-cs-%ED%8A%B9%EA%B0%95/dashboard

 

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 강의 | 큰돌 - 인프런

큰돌 | 국내 1위 '면접을 위한 CS 전공지식노트' 저자의 디자인패턴, 네트워크, 운영체제, 데이터베이스 등 CS 지식 강의! CS 면접에 필요한 모든 개념과 최신 기출을 다룬다!, [사진] [사진] [실제 카

www.inflearn.com

 

인프런 CS지식의 정석 중..