cs/ODOQ

[ODOQ] DB 인덱스(Index)

icodesiuuuu 2024. 11. 28. 17:49

[One Day One Question]

DB에서 인덱스에 대해 설명해 주세요.


데이터베이스 인덱스는 테이블에서 데이터를 빠르게 검색하기 위해 사용하는 데이터 구조입니다. 책의 목차처럼 작동하여 특정 데이터를 빠르게 찾을 수 있게 해줍니다.

 

1. 인덱스의 역할

  • 검색 속도 향상: 테이블에 저장된 데이터 중 특정 값을 찾거나 범위를 검색할 때, 테이블 전체를 탐색(Full Table Scan)하는 대신 인덱스를 통해 필요한 데이터에 바로 접근할 수 있습니다.
  • 데이터 정렬: 인덱스는 데이터를 정렬된 상태로 유지하므로, 검색뿐 아니라 정렬, 그룹화와 같은 작업에서도 성능을 향상시킵니다.

2. 인덱스의 장점

  • 빠른 검색: 특정 데이터를 빠르게 찾을 수 있습니다.
  • 정렬 비용 감소: 데이터를 이미 정렬된 상태로 유지합니다.
  • 쿼리 성능 향상: WHERE, JOIN, GROUP BY, ORDER BY 절의 성능이 개선됩니다.

3. 인덱스의 단점

  • 쓰기 성능 저하: 데이터를 삽입, 업데이트, 삭제할 때 인덱스도 갱신해야 하므로 성능이 떨어질 수 있습니다.
  • 추가 저장 공간 필요: 인덱스를 저장하기 위해 추가적인 디스크 공간이 필요합니다.
  • 잘못된 인덱스 사용: 너무 많은 인덱스를 생성하거나 자주 사용되지 않는 열에 인덱스를 추가하면 오히려 성능이 저하될 수 있습니다.

4. 인덱스 사용 시 주의점

  • 자주 검색하는 열에 인덱스 생성: WHERE 조건, JOIN, ORDER BY 등에 자주 사용되는 열에 인덱스를 생성합니다.
  • 너무 많은 인덱스 피하기: 과도한 인덱스는 성능 저하를 초래합니다.
  • 분포도가 낮은 열에 신중하게 사용: 중복값이 많은 열(예: 성별, 참/거짓)에는 비효율적일 수 있습니다.

 

 

'cs > ODOQ' 카테고리의 다른 글

[ODOQ] 얕은 복사 깊은 복사  (0) 2024.12.02
[ODOQ] 트랜잭션 격리수준  (0) 2024.11.29
[ODOQ] 일급 컬렉션  (0) 2024.11.27
[ODOQ] Checked Exception, Unchecked Exception  (0) 2024.11.26
[ODOQ] JPA의 N + 1  (0) 2024.11.25