본문 바로가기
database

Index 란? (클러스터드, 넌 클러스터드 설명)

by 무대포 개발자 2020. 11. 15.
728x90
반응형

Index 란?

  • 데이터를 검색할 때, 모든 데이터를 순차 검색하기에는 시간이 너무 오래 걸림.
  • 그렇기에 메모리를 사용해 검색 속도를 빠르게 하기 위한 기법이다.
  • B+tree 알고리즘을 사용하며, Hash 알고리즘을 안쓰는 이유는 '<', '>' 비교가 안되기 때문이다.

클러스터드 인덱스

  • 순서대로 행을 재배열
  • PK 를 설정하면 자동으로 클러스터드 인덱스로 설정이 됨.
  • 예를 들면, ID, 거래일 이 PK 이면, 2020-01-01, 2019-12-31 순으로 데이터를 넣으면 물리적으로 날짜를 정렬한 후 저장이 돼있음.
  • 2019-12-31, 2020-01-01 순으로.
  • 1개만 만들 수 있음.
  • PK 에 따라 데이터 저장 위치가 결정되니 조회시에는 빠르겠지만, 수정, 삭제, 삽입은 느리겠지. PK 에 따라 다 계산해야하니.

넌 클러스터드 인덱스

  • 클러스터드 인덱스는 물리적으로 재배열해서 정렬한다면, 넌 클러스터드 인덱스는 재배열하지 않음.
  • 단, 별도의 인덱스를 만든다. 이 인덱스 들은 각각 데이터가 어디있는지 가리킴.
  • 예를 들면, 주소라는 인덱스가 있다면, 주소라는 인덱스를 만들고. 이 인덱스는 주소 값을 가지고 있음.
  • 하나의 테이블에 여러개 인덱스를 만들 수 있음.
  • 삽입과 수정 삭제가 빠름. (데이터 재배열이 일어나지 않으니). 조회는 느림. 인덱스를 찾고 물리 주소를 찾아가야하는데. 이 물리주소가 정렬이 안되있으니.

reference

댓글