인덱스란?
인덱스는 데이터베이스 테이블의 특정 컬럼에 대해 별도로 정렬된 데이터 구조를 유지하여 검색 속도를 높입니다. 이를 책의 목차에 비유하면 이해하기 쉽습니다:
- 데이터 = 책의 내용
- 인덱스 = 책의 목차
- 물리적 주소 = 책의 페이지 번호
인덱스는 데이터를 정렬하여 조건에 맞는 데이터를 빠르게 찾을 수 있도록 돕습니다.
인덱스의 장점과 단점
장점
- 검색 속도 향상
- 데이터를 정렬된 상태로 유지하여 조건 검색(WHERE, ORDER BY, JOIN)을 더 빠르게 수행합니다.
- 대규모 데이터 처리
- 대량의 데이터에서 특정 조건을 만족하는 레코드를 빠르게 찾아냅니다.
단점
- 저장 성능 저하
- 새로운 데이터를 추가하거나 삭제, 수정하는 경우, 인덱스를 다시 정렬해야 하므로 쿼리 실행 속도가 느려질 수 있습니다.
- 저장 공간 추가 필요
- 인덱스는 전체 데이터베이스의 약 10%에 해당하는 추가 저장 공간이 필요합니다.
- 유지 비용 증가
- 자주 변경되는 데이터를 가진 컬럼에 인덱스를 사용할 경우, 인덱스를 유지하는 비용이 커져 성능 저하를 초래할 수 있습니다.
인덱스 사용이 효율적인 경우
인덱스는 아래와 같은 경우에 유용하게 사용됩니다:
- 규모가 큰 테이블
- 데이터가 많은 테이블에서 특정 조건에 맞는 데이터를 빠르게 검색할 때 유용합니다.
- 중복도가 낮은 컬럼
- 데이터의 range가 넓고 중복도가 낮은 컬럼에 적합합니다. (예: 고유 ID, 날짜 컬럼)
- 조회가 많은 컬럼
- 자주 조회되거나 정렬된 상태가 중요한 컬럼에 적합합니다. (예: WHERE, ORDER BY, JOIN 연산에서 사용)
인덱스 사용이 비효율적인 경우
아래와 같은 경우에는 인덱스 사용이 오히려 성능을 저하시킬 수 있습니다:
- 선택성이 낮은 컬럼
- 중복도가 높은 컬럼(예: 성별, 참/거짓)에서 인덱스를 사용하는 경우, 많은 데이터를 포인트하게 되어 효율성이 떨어집니다.
- 자주 변경되는 컬럼
- 업데이트, 삭제, 삽입 작업이 빈번한 컬럼에서는 인덱스 유지 비용이 커져 성능이 저하될 수 있습니다.
인덱스의 동작 방식
- 정렬된 상태 유지
- 인덱스는 테이블의 데이터를 정렬된 상태로 유지합니다. 이를 통해 특정 조건에 맞는 데이터를 빠르게 검색할 수 있습니다.
- 검색 최적화
- 쿼리가 실행되면 데이터베이스는 인덱스를 사용해 검색 범위를 축소합니다.
- 데이터 수정 시 추가 작업
- 데이터를 삽입, 수정, 삭제할 때 인덱스를 재정렬하는 작업이 필요합니다. 이로 인해 쓰기 성능은 저하될 수 있습니다.
인덱스 활용의 핵심 포인트
- 검색 성능 향상
- 인덱스는 데이터의 검색 속도를 대폭 개선합니다. 특히 WHERE, ORDER BY, JOIN 조건에서 효과적입니다.
- 저장 성능의 희생
- 인덱스는 저장 성능을 희생하여 검색 속도를 높이는 기능입니다.
- 인덱스를 생성하기 전, 컬럼의 데이터 사용 빈도와 변경 빈도를 고려해야 합니다.
정리하며
인덱스는 데이터 검색 속도를 높이는 데 있어 강력한 도구입니다. 그러나 사용 조건과 데이터베이스의 특성을 잘 분석하여 적절한 컬럼에만 인덱스를 적용해야 합니다. 잘못된 인덱스 사용은 성능 저하를 초래할 수 있으므로, 항상 검색 성능과 저장 성능 간의 균형을 고려하는 것이 중요합니다.
'기타 > 취준 기록' 카테고리의 다른 글
[2024 하반기] 한국고용정보원 정보화 2차 면접 후기 (3) | 2024.11.29 |
---|---|
[2024 하반기] 농협정보시스템 필기 합격 (0) | 2024.11.29 |
[기술 면접 준비] WAS의 구조와 개념: Web Server와의 협업 및 요청 처리 과정 (0) | 2024.11.20 |
[기술 면접 준비] WAS의 구조와 개념: 웹 서버와의 차이점 이해하기 (0) | 2024.11.19 |
[기술 면접 준비] HTTP와 HTTPS의 차이점 (0) | 2024.11.18 |