Index

고승원·2022년 12월 27일
0

CS

목록 보기
11/12

Index

무엇을 찾아보기 위하여 만든 낱말 표, 색인 (목차 등)

DB에선 검색 성능을 향상시키기 위해 인덱스를 사용한다.

인덱스는 B Tree로 이루어져 있다.

Index를 사용하게 되면 테이블이 정렬되어 Full Table Scan을 할 필요 없이 조건에 맞는 데이터들을 찾아낼 수 있다.

반면에 Index는 정렬된 상태를 유지시켜야 하기 때문에 SELECT문을 제외한 INSERT, UPDATE, DELETE문이 일어나면 재정렬을 해주어야 하기 때문에 수정문이 많은 경우 오히려 성능에 악영향을 끼치게 된다.

인덱스를 생성할 때 고려할 점으로 INSERT, UPDATE, DELETE와 SELECT절의 비율을 비교하여 적절히 사용해야 한다.

인덱스를 적용할 때 카디널리티가 높고, 검색시 자주 사용하는 컬럼에 적용하자.

Index 종류

인덱스 종류는 크게 두가지로 나뉜다.

클러스터링 인덱스

실제 데이터를 정렬한 인덱스로 테이블당 한개만 생성할 수 있다. (pk적용시 자동 생성)

  • 실제 데이터를 정렬시킨다.
  • 테이블당 한개만 만들 수 있다.
  • 리프 페이지 = 데이터 페이지
  • pk or unique + notnull 조건을 걸면 자동 생성

논클러스터링 인덱스

실제 데이터와 다른 별도의 무리를 뜻한다. ex)책의 목차 (unique적용시 자동생성)

  • 별도의 인덱스 페이지 생성하기 때문에 실제 데이터 페이지를 변경하지 않는다.
  • 여러개 만들 수 있다.
  • 리프 페이지 = 데이터 페이지의 주소

참고


[10분 테코톡] 라라, 제로의 데이터베이스 인덱스

profile
봄은 영어로 스프링

0개의 댓글