Skip to content

Latest commit

 

History

History
33 lines (24 loc) · 1.81 KB

index.md

File metadata and controls

33 lines (24 loc) · 1.81 KB

인덱스(Index)

데이터베이스에서 검색 속도를 높이기 위한 기술


💡 인덱스 특징

    Primary Key를 사용하면 자동으로 인덱스가 생성되지만, 다른 컬럼에 대해서도 직접 생성할 수도 있다. 하지만 인덱스를 잘못 만들게 되면 오히려 성능이 떨어질 수도 있다. 인덱스는 데이터의 저장, 수정, 삭제 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이기 때문이다.
    테이블에 데이터를 추가(insert)하거나 수정, 삭제하는 경우에는 인덱스에도 변경이 일어나야 한다. WHERE 조건절에 사용되는 칼럼이라고 전부 인덱스로 생성하면 데이터 저장, 수정, 삭제 성능이 떨어지고 인덱스의 크기가 비대해져서 오히려 역효과만 불러올 수 있다.


💡 인덱스를 만드는 기준

  1. Cardinality(카디널리티)가 높은 컬럼에 만든다.
    : 카디널리티는 value의 중복이 적은 컬럼을 나타내는 지표다.
    : 중복도가 '낮으면' 카디널리티가 '높다'고 표현한다.
    : 예를 들어 성별이라는 컬럼은 카디널리티가 높으며 이는 인덱스로 만들지 않는 것이 좋다.

  2. 수정, 삭제가 많이 일어나지 않는 컬럼에 만든다.


💡 테이블 스캔 방식

  • FTS(Full Table Scan)
    : 테이블을 처음 부터 끝까지 검색하는 방법
  • Index Scan
    : 인덱스를 검색하여 해당 자료의 테이블을 액세스 하는 방법
    • index unique scan
      : 유일 인덱스를 사용하여 단 하나의 데이터를 추출하는 방식이다.
      : =로 값이 주어지면 결과는 최대 1건이다.
    • index range scan
    • index full scan