인덱스 (index)

Moon Blue의 IT 로그 📝·2023년 3월 29일
0
post-thumbnail

인덱스는 데이터베이스에서 데이터 검색 속도를 높이기 위해 사용하는 자료구조입니다. 책의 색인과 비슷하게, 데이터베이스의 인덱스는 특정 키 값에 따라 데이터의 위치를 참조하여 검색 시간을 줄입니다.

🔍 인덱스의 원리

인덱스(index) 는 일반적으로 B-Tree, B+Tree, Hash 인덱스, Bitmap 인덱스 등의 자료구조를 사용합니다. 이러한 자료구조를 통해 데이터의 키 값과 해당 데이터가 저장된 위치를 매핑하고, 효율적인 검색 알고리즘을 사용하여 데이터를 빠르게 찾을 수 있습니다. 예를 들어, B-Tree 인덱스의 경우, 키 값들이 정렬되어 있어 이진 탐색을 사용하여 데이터를 빠르게 검색할 수 있습니다.

✅ 인덱스의 장점

인덱스의 가장 큰 장점은 데이터 검색 속도를 향상시키는 것입니다. 인덱스가 적용된 테이블에서 데이터를 검색하면, 데이터베이스는 인덱스를 참조하여 효율적으로 데이터를 찾아내므로, 전체 테이블을 스캔하지 않아도 됩니다. 이로 인해 데이터 검색 속도가 크게 향상됩니다.

✅ 인덱스의 단점

인덱스는 검색 속도를 향상시키는 대신, 데이터 삽입, 수정, 삭제 시 성능에 부정적인 영향을 미칩니다. 인덱스가 존재하는 경우, 데이터를 추가하거나 수정할 때 인덱스 자료구조도 함께 업데이트해야 하기 때문입니다. 또한, 인덱스는 디스크 공간을 추가로 사용합니다. 따라서 인덱스를 사용할 때는 검색 속도 향상과 삽입/수정/삭제 속도의 저하, 그리고 디스크 공간 사용량을 고려하여 적절한 인덱스를 생성해야 합니다.

🔥 인덱스 사용 시 주의사항

검색이 빈번한 컬럼에만 인덱스를 생성하고, 데이터 변경이 잦은 컬럼은 인덱스 생성을 지양해야 합니다.
인덱스를 너무 많이 생성하면 데이터 삽입, 수정, 삭제 속도가 저하될 수 있으므로, 꼭 필요한 인덱스만 생성해야 합니다.
조건이 여러 개인 경우, 다중 컬럼 인덱스를 생성하여 쿼리의 성능을 향상시킬 수 있습니다.
인덱스의 성능을 최적화하기 위해, 데이터베이스 관리 시스템(DBMS)에서 제공하는 인덱스 통계 정보를 주기적으로 갱신해야 합니다.

📚 인덱스의 종류

인덱스에는 여러 가지 종류가 있으며, 데이터베이스의 특성과 요구 사항에 따라 적합한 인덱스를 선택할 수 있습니다.

  • B-Tree : 가장 일반적으로 사용되는 인덱스로, 키 값의 크기와 상관없이 균일한 검색 성능을 제공합니다.
  • Hash : 해시 함수를 사용하여 키 값을 인덱스로 변환하여 사용하는 인덱스로, 키 값이 정렬되지 않지만, 동등 검색에 대해 빠른 성능을 제공합니다.
  • Bitmap : 비트 배열을 사용하여 인덱스를 저장하는 인덱스로, 소수의 고유한 값을 가진 컬럼에 적합하며, AND, OR 등의 비트 연산을 이용한 검색에 빠른 성능을 제공합니다.

인덱스를 사용함으로써 데이터베이스의 검색 성능을 크게 향상시킬 수 있지만, 데이터 삽입, 수정, 삭제 성능이 저하되고 추가적인 디스크 공간을 사용한다는 단점이 있습니다. 따라서 인덱스를 사용할 때는 이러한 장단점을 고려하여 적절한 인덱스를 생성하고 관리해야 합니다.

profile
What a Beautiful World~ 🌏

0개의 댓글