이번에는 Index에 대해 알아보겠스니다.
index란?
인덱스(Index)는 데이터베이스에서 데이터 검색 속도를 높이기 위해 테이블에 추가하는 데이터 구조입니다. 인덱스는 일종의 색인이라고 생각할 수 있습니다. 적절하게 사용하면 데이터베이스의 검색 속도를 상당히 높일 수 있습니다.
인덱스의 동작 원리는 간단합니다. 데이터베이스는 인덱스를 통해 검색을 수행할 필요가 있을 때, 인덱스를 검색해서 해당 테이블의 레코드를 찾습니다. 이렇게 인덱스를 사용하면 검색 속도를 높일 수 있습니다.
인덱스는 대개 B-트리 또는 해시 테이블을 사용하여 구현됩니다.
B-트리 인덱스는 키를 정렬한 다음 각 노드에서 키 범위를 비교해서 매칭되는 키를 찾습니다.
해시 인덱스는 해시 함수를 사용하여 키를 해시테이블에서 바로 찾습니다.
인덱스의 장단점
장점:
- 데이터 검색 속도를 향상시키는 데 효과적입니다.
- WHERE 절에 있는 조건에 인덱스 컬럼을 사용할 경우, 검색 속도가 매우 빨라집니다.
단점:
- 인덱스를 생성하면 데이터를 추가, 삭제, 수정할 때 인덱스도 함께 갱신되기 때문에 일부 작업은 느려질 수 있습니다.
- 인덱스는 추가적인 디스크 공간을 사용하기 때문에, 큰 테이블이나 인덱스가 많은 테이블의 경우 저장 공간을 많이 차지할 수 있습니다.
- 인덱스 생성, 수정, 삭제 등 작업이 잦을 경우 데이터의 일관성을 맞출 때마다 인덱스도 함께 조정해야 하기 때문에 부하가 걸릴 수 있습니다.
결론적으로, 데이터 검색 속도를 향상시키는 데 유용한 인덱스가 있지만, 적절히 사용하지 않으면 성능 저하나 디스크 공간의 낭비 등의 문제가 발생할 수 있습니다. 따라서 필요한 인덱스만을 추가하고 유지보수를 하면서 최적화 해야합니다.
'개발 지식' 카테고리의 다른 글
IP 주소로 외부 API 호출하기 (CertificateException No subject alternative names present) (0) | 2025.03.06 |
---|---|
Ant build VS Maven build VS Gradle Build (0) | 2023.08.04 |
트랜잭션의 특징 (0) | 2023.04.05 |
애자일(Agile)이란? (0) | 2023.03.27 |
[CS] Get vs Post Method 차이점을 알아보자! (0) | 2023.03.13 |