DB

[DB] 인덱스(Index)란?

ryureeru 2023. 7. 31. 13:56

인덱스(Index)란?

 

  • 데이터베이스에서 특정 컬럼(또는 여러 컬럼의 조합)의 값을 빠르게 찾아내기 위한 자료구조
  • 데이터베이스 성능을 향상시키는 데 도움을 주는 개념
  • 주로 데이터베이스의 검색 작업을 최적화하고, 데이터를 빠르게 접근하고 필터링하는 데 사용
  • 데이터베이스의 레코드들을 정렬된 형태로 유지하며, 검색 시 해당 값이 존재하는 위치를 빠르게 찾아냄
  • 이를 통해 데이터베이스는 모든 레코드를 순차적으로 검색하는 것보다 빠르게 원하는 값을 찾아낼 수 있음
  • B-Tree 혹은 Hash Table과 같은 자료구조로 구현

 

 

 

 

 

주요 장점:

 

1. 검색 성능 향상

인덱스가 적용된 컬럼을 검색하는 쿼리는 인덱스를 사용하지 않은 경우보다 빠르게 실행됩니다.

데이터베이스가 해당 인덱스를 통해 검색 대상 값을 빠르게 찾아낼 수 있기 때문입니다.
 


2. 정렬 및 그룹화 성능 향상

ORDER BY 절이나 GROUP BY 절에서 인덱스가 사용되면, 정렬 또는 그룹화 작업이 빠르게 처리됩니다.

 


3. 고유성(unique) 검사

UNIQUE 인덱스를 사용하여 특정 컬럼의 중복된 값을 방지할 수 있습니다.

 


4. JOIN 성능 향상

JOIN 작업을 수행할 때 인덱스를 사용하면 조인 대상 테이블을 효율적으로 찾아낼 수 있습니다.

 

 

 

하지만 인덱스를 사용하는 것에도 단점이 있다:

 

1. 저장 공간 필요
인덱스를 유지하기 위해 추가적인 저장 공간이 필요합니다.

특히 큰 테이블에 인덱스를 많이 사용하면 저장 공간이 상당히 소모될 수 있습니다.

 


2. 쓰기 성능 저하
인덱스를 생성하면 데이터를 삽입, 갱신, 삭제할 때마다 인덱스를 업데이트해야 합니다.

따라서 쓰기 작업이 많은 테이블에 인덱스를 많이 사용하면 쓰기 성능이 저하될 수 있습니다.

 


3. 인덱스 유지 비용
인덱스를 생성하고 유지하는 데에는 비용이 발생합니다.

데이터의 변경이 자주 일어나는 테이블에 인덱스를 사용할 때는 이 비용을 고려해야 합니다.

 


4. 인덱스 선택의 어려움
적절한 인덱스를 선택하는 것은 중요한 결정이며, 잘못된 인덱스를 생성하면 성능에 악영향을 미칠 수 있습니다.

 

 

 

따라서 인덱스를 사용할 때에는 데이터베이스의 크기와 특성, 어떤 쿼리가 자주 실행되는지, 쓰기 작업과 읽기 작업의 비율 등을 고려하여 적절한 인덱스를 선택하고, 필요한 인덱스만 생성하는 것이 좋습니다. 인덱스를 올바르게 활용하면 데이터베이스의 성능을 향상시키고 빠른 응답시간을 얻을 수 있습니다.

'DB' 카테고리의 다른 글

[DB] NOSQL 특징: 분산 확장성  (0) 2023.07.31
[DB] 면접 예상 질문(1)  (0) 2023.07.31
[DB] 윈도우 MariaDB utf8 설정 방법  (0) 2022.12.06
[DB] MariaDB - 원격 접속  (0) 2022.10.19
[DB] exERD 포워드 엔지니어링  (0) 2022.09.24