RDBMS INDEX

설명서읽는사람·2023년 4월 28일
0

출처 https://bcp0109.tistory.com/365

분류

clustered index

  • primary key에 자동 적용되는 index
  • 테이블에 한 개만 허용
  • non-clustered에 비해 조회는 빠르지만 삽입/수정/삭제는 더 느림

non-clustered index

  • unique key에 자동 적용되는 index

parimary index

  • primary key 기반으로 만들어진 index
  • 테이블에 한 개만 허용

secondary index

  • 사용자 임의로 만든 index
  • 테이블에 여러개 가능

index 사용시 주의할 점

  • 데이터 중복도(cardinality)가 적은 컬럼 위주로 적용할 것

  • index 개수는 많아도 3~4개까지만 사용할 것
    - 삽입/수정/삭제 시 index로 정렬된 데이터도 같이 수정해야 하기 때문에 성능이 떨어질 수 있음
    - 데이터 증가에 따라 index도 증가하기 때문에 사용되는 메모리도 같이 증가함
    - index가 많아지면 옵티마이저가 잘못된 인덱스를 선택할 확률이 높아짐

  • 읽어야 하는 레코드가 많아지면 테이블을 직접 읽는 것 보다 성능이 떨어짐
    - 전체 레코드의 25%가 넘어가면 테이블을 직접 읽는 것이 더 빠름
    - 옵티마이저가 index를 사용할지 알아서 판단하기 때문에 크게 신경쓸 부분은 아님

  • 트리구조로 된 index 특성상 복합 index 설정시 설정된 컬럼을 순서대로 사용해야 index를 탈 수 있다.

  • 복합 index에서 순서는 데이터 중복도(cadinality)가 낮은 순으로 설정하는 것이 빠르다.

  • index를 여러개 사용할 때 범위 조건을 걸면 범위 조건은 index를 타지만 이후 조건들은 index를 타지 않는다.

  • index로 지정한 컬럼을 조건에 사용할 때 사칙연산 등 컬럼에 수정을 가하면 index를 타지 않는다.

0개의 댓글