index

정하윤·2023년 9월 6일

index란?

  • 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조이다.
  • 익덴스는 항상 최신의 정렬상태를 유지한다.
  • 인덱스도 하나의 데이터베이스 객체이다.
  • 데이터베이스 크기의 약 10% 정도의 저장곤안이 필요하다.

인덱스 알고리즘

  • SELECT를 사용할때 인덱스를 사용하면 성능이 향상된다.
  • INSERT, UPDATE, DELETE를 사용할때 인덱스를 사용하면 페이지 분할과 사용안함 표시로 인덱스의 조각화가 심해져 성능이 저하된다.

클러스터링 인덱스

  • 실제 데이터 자체가 정렬 상태이다.
  • 리프 페이지가 데이터 페이지이다.
  • 테이블당 1개만 존재한다.
  • primary key(우선순위), unique + not null과 같은 제약조건 적용시 자동생성한다.

논-클러스터링 인덱스

  • 실제 데이터 페이지는 그대로이다.
  • 별도의 인덱스 페이지가 존재한다. → 추가 공간이 필요함.
  • 테이블당 여러개가 존재한다.
  • 리프 페이지에 실제 데이터 페이지 주소가 존재한다.
  • unique 제약조건 적용시 자동 생성된다.
  • 직접 index 생성시 논-클러스터링 인덱스가 생성된다.

인덱스 적용 기준

  • 인덱스를 적용할 컬럼은 카디널리티가 높은(중복 수치가 낮은 것) 컬럼에 적용하는것이 좋다.

  • WHERE, JOIN, ORDER BY 절에 자주 사용되는 컬럼

  • 인덱스는 추가 공간이 필요하다.

  • 조건 절이 없다면 인덱스가 사용되지 않는다.

  • INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼

  • 규모가 작지 않은 테이블

0개의 댓글