개발하는 체대생

DB에서 Index란? 본문

취업스터디

DB에서 Index란?

개발하는체대생
질문 : DB에서 인덱스를 잘 사용하면 어떤 장점이 있을까요?
답변 :인덱스를 사용하지 않으면 모든 레코드를 스캔해야 하지만 인덱스를 사용하면 특정 컬럼에서 빠르게 데이터를 찾을 수 있다는 장점이 있습니다. 그리고 인덱스는 중복 값을 가지지 않으므로, 특정 컬럼에 대한 중복 값을 방지하여 데이터의 일관성과 무결성을 유지하는 데 도움을 줄수 있습니다. 마지막으로 인덱스를 사용하면 ORDER BY나 GROUP BY와 같은 연산을 빠르게 처리할 수 있다는 장점이 있습니다.

Index란?

인덱스(Index)는 데이터베이스에서 검색 속도를 향상시키기 위해 사용되는 자료구조입니다.

 

Index의 장점

  1. 빠른 검색 속도: 인덱스를 사용하면 검색 작업이 빠르게 수행됩니다. 인덱스를 사용하지 않는 경우 데이터베이스가 전체 테이블을 스캔하여 검색 조건을 만족하는 데이터를 찾아야 하므로 처리 시간이 길어질 수 있습니다.
  2. 작은 리소스로 더 많은 데이터 처리 가능: 인덱스를 사용하면 적은 리소스로 많은 데이터를 처리할 수 있습니다. 인덱스를 사용하지 않는 경우 데이터베이스가 전체 테이블을 스캔하여 검색 조건을 만족하는 데이터를 찾아야 하므로 처리 시간과 리소스가 많이 소모됩니다.
  3. 정렬된 결과: 인덱스를 사용하면 데이터를 정렬된 순서로 가져올 수 있습니다. 인덱스를 사용하지 않는 경우 데이터를 가져오는 순서가 보장되지 않으므로 결과가 정확하지 않을 수 있습니다.
  4. 고유한 값 보장: 인덱스를 사용하면 컬럼에 고유한 값을 보장할 수 있습니다. 이는 PRIMARY KEY나 UNIQUE 제약 조건과 같은 제약 조건을 만족하는 데 유용합니다.

 

Index의 단점(모든 컬럼에 인덱스를 적용하지 않는 이유)

  1. 인덱스를 생성하는 데 시간이 걸림: 인덱스를 생성하는 데 시간이 걸리므로 인덱스가 적용된 컬럼에 삽입, 삭제, 수정이 잦다면 성능에 영향을 줄 수 있습니다.
  2. 저장 공간을 차지: 인덱스를 생성하면 새로운 저장 공간을 차지하고, 테이블의 크기가 커질수록 인덱스의 크기도 커지기 떄문에 많은 저장 공간을 사용하게 됩니다.

 

Index의 종류

B-Tree 인덱스

B-Tree 인덱스는 데이터를 키-값 쌍으로 저장하는 트리 구조의 인덱스입니다. B-Tree 인덱스는 대부분의 데이터베이스에서 기본적으로 사용되는 인덱스 유형으로, 검색 시간이 O(log n)으로 매우 빠르며, 범위 검색이 가능하다는 장점이 있습니다. 또한 B-Tree 구조를 가지기 때문에 삽입, 삭제, 갱신 등의 작업이 비교적 안정적으로 수행됩니다.

 

해시 인덱스

해시 인덱스는 데이터를 해시 함수에 따라 해시 버킷에 저장하는 인덱스입니다. 해시 함수에 따라 데이터의 키 값이 해시값으로 변환되어 인덱스에 저장되므로, 검색 시간이 O(1)로 매우 빠르다는 장점이 있습니다. 하지만 해시 함수의 충돌(Collision) 문제와 해시 버킷의 크기 조절 문제 등이 발생할 수 있으며, 범위 검색이 불가능하다는 단점이 있습니다.

 

전문 검색 인덱스

전문 검색 인덱스는 텍스트 데이터를 검색하는 데 특화된 인덱스입니다. 전문 검색 인덱스는 전문 검색 엔진이 사용하는 인덱스로, 텍스트 데이터를 형태소 분석 등의 처리를 거쳐 인덱싱하여 저장합니다. 이러한 방식으로 인덱싱된 데이터는 다양한 검색 기능을 제공할 수 있으며, 특히 검색 대상이 매우 큰 경우에 유용합니다.

'취업스터디' 카테고리의 다른 글

제네릭이란?  (0) 2023.03.29
MSA(Micro Service Architecture)란?  (0) 2023.03.29
DI(Dependency Injection)란?  (0) 2023.03.28
RESTful API란?  (0) 2023.03.27
객체지향 프로그래밍(OOP)에 대한 설명  (0) 2023.03.27
Comments