본문 바로가기
IT/DB

DB - 인덱스(Index)의 개념과 장단점

by 꿀코 2023. 2. 19.
반응형

1. 인덱스(Index)의 개념

인덱스(Index)는 데이터 검색 속도를 향상시키는 데 사용되는 자료구조입니다. 특정 컬럼에 인덱스를 생성하면 해당 컬럼에 대한 B-tree 구조를 만들어 해당 컬럼 값을 인덱스의 키로 사용합니다. 이렇게 하면 해당 컬럼 값을 검색하는 쿼리에서 인덱스를 사용하여 검색 속도를 높일 수 있습니다.

 

인덱스를 이해하는 가장 쉬운 방법은 책의 목차 또는 색인을 생각하시면 됩니다. 책에서 특정 내용을 찾을 때 목차나 색인을 활용하면 더 빠르게 원하는 내용을 찾을 수 있는 것처럼 (테이블 = 책), (인덱스 = 목차 또는 색인)이라고 가정하면 인덱스를 활용하여 테이블 내에서 원하는 특정 레코드를 빠르게 검색할 수 있습니다.

 

 

2. 장점과 단점

인덱스를 활용하였을 때 데이터를 검색하는 속도와 성능이 향상된다는 큰 장점이 있지만 인덱스를 잘 못 활용하였을 경우 오히려 시스템에 부하를 일으킬 수 있으므로 조심해야 합니다.

 

1) 장점

인덱스를 설정해 두었다면 그 자체로 특정 컬럼을 기준으로 정렬되어 저장되어 있다는 것입니다. 따라서 조건절이나 정렬 등에서 큰 성능 향상을 기대할 수 있습니다.

  • 데이터 검색 성능 향상
  • 시스템 부하를 줄임
  • 조건절(WHERE) 또는 정렬(ORDER BY) 사용 시 성능 향상
  • MIN, MAX 함수 사용시 성능 향상

 

2) 단점

인덱스가 위와 같은 장점들을 가지고 있는 반면에 인덱스를 적용할 경우의 단점도 존재합니다.

  • 별도의 저장 공간 필요
  • 추가 관리 작업 및 리소스
  • 잘못 설정할 경우의 성능 저하

 

인덱스가 적용된 컬럼에 삽입(INSERT), 삭제(DELETE), 수정(UPDATE) 작업을 수행할 경우 아래 정리된 추가 작업이 발생합니다.

 

 - INSERT : 삽입된 데이터에 대한 인덱스 추가

 - DELETE : 삭제된 데이터의 인덱스를 사용하지 않음으로 처리

 - UPDATE : 기존의 인덱스를 사용하지 않음으로 처리하고, 수정된 데이터에 대한 인덱스 추가

 

데이터가 삽입, 삭제, 수정되면서 해당 컬럼에 적용된 인덱스도 수정이 필요하기 때문에 빈번하게 수정되는 컬럼에 인덱스를 적용할 경우 성능 저하의 원인이 됩니다. 그리고 삭제, 수정 작업의 경우 기존의 인덱스가 삭제되는 것이 아니고 '사용하지 않음'으로 처리되어 메모리 또는 저장 공간의 부족 현상도 일으킬 수 있다는 점을 유의해야 합니다.

 

 

3. 효율적 사용

시스템 성능 향상을 위하여 인덱스 설정 시에 유의해야 할 사항들입니다.

 

 1) 테이블의 규모가 큰 경우

 2) 컬럼의 삽입, 삭제, 수정 이벤트가 빈번하게 발생하지 않는 경우

 3) 조건절(WHERE)이나 정렬(ORDER BY)에 자주 사용되는 컬럼

 4) 주민등록번호 등 데이터의 중복이 낮은 컬럼

반응형

댓글