Index

참새·2023년 3월 28일
0

Index(인덱스, 색인)

  • 데이터베이스에서 검색 속도를 높이기 위해 사용되는 자료구조.
  • 일반적으로 B-Tree(이진 트리) 구조를 사용하여 구현.
  • 특정 컬럼에 대한 색인을 생성하여 해당 컬럼을 검색할 때 더 빠르게 검색할 수 있음.
  • 주로 SELECT 쿼리의 WHERE 절에서 사용되며, WHERE 절에서 조건에 해당하는 레코드를 찾기 위해 모든 레코드를 스캔하는 것이 아니라, 인덱스를 통해 빠르게 찾을 수 있음.

장점

  • 검색 속도 향상

    데이터를 미리 정렬하여 저장하기 때문에 인덱스가 없는 경우에는 전체 데이터를 스캔해야 하지만, 인덱스를 사용하면 인덱스에 저장된 데이터만 검색하여 빠르게 결과를 가져올 수 있음.
  • 데이터 정렬

    데이터를 정렬된 상태로 유지하기 때문에 ORDER BY 구문과 같은 정렬 작업에서도 빠르게 결과를 가져올 수 있음.
  • 중복 제거

    중복된 값을 가지지 않기 때문에 중복 데이터를 제거하고 유일한 값을 저장할 때 유용. 인덱스를 사용하면 중복된 데이터를 검색하지 않아도 되므로 검색 속도 향상.
  • 테이블 용량 절감

    데이터를 미리 정렬하여 저장하기 때문에 테이블의 용량을 절감할 수 있음. 또한 테이블의 크기가 작아지면 디스크에서 데이터를 읽어오는 속도가 빨라져 검색 속도 향상.
  • 데이터 일관성 유지

    데이터베이스 내부에서 자동으로 유지되므로, 데이터 일관성 유지 가능. 데이터가 추가, 수정, 삭제되더라도 인덱스가 자동으로 갱신되므로 검색 결과가 일관성을 유지.

단점

  • 생성에 필요한 추가 공간

    테이블에 대한 인덱스를 생성하면 데이터를 미리 정렬하여 저장하기 때문에 추가적인 공간이 필요.
  • 생성에 필요한 시간

    테이블의 크기가 크고 인덱스를 생성할 컬럼이 많을수록 인덱스를 생성하는 시간이 증가.
  • 업데이트 오버헤드

    인덱스가 갱신되는데 필요한 추가적인 오버헤드 때문에 데이터 삽입, 수정, 삭제 작업이 느려짐.
  • 낮은 선택도

    선택도가 낮으면 인덱스를 사용해도 검색 결과를 반환하는 레코드 수가 많아져서 검색 속도가 느려질 수 있음.
  • 지연 갱신

    데이터 변경 시 해당 인덱스도 함께 갱신되지만, 이 과정에서 인덱스가 제대로 갱신되지 않을 경우 데이터 일관성 문제가 발생할 수 있음.
profile
응애 나 아기 개발자

0개의 댓글