17강 indexing

OneTwoThree·2023년 5월 28일
0

데베시

목록 보기
2/7

참고링크

✅Index란 ?

  • 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조
  • 인덱스는 index field와 해당 field 값을 포함하는 모든 disk block을 가리키는 pointer를 저장함

  • Primary Index : PK로 정렬
  • Clustering Index : key가 아닌 필드로 정렬
  • Secondary Index : 정렬이 안된 필드로 index 만들기. 여러개 가능

Primary Index

  • PK값에 의해 physical ordering of the file (물리적 정렬)
  • PK에 대한 인덱스
  • 기본 키를 정의하면 자동으로 생성됨
  • 테이블 당 하나만 가질 수 있음
  • 특정 레코드를 검색할 때 빠른 속도로 찾을 수 있음
  • 데이터 삽입, 갱신, 삭제의 성능이 약간 저하될 수 있음
  • 데이터 파일의 구조를 유지하기 위해 인덱스를 갱신해야 하기 때문임

  • data file의 block 수만큼 인덱스 값 존재

Clustering Index

  • nonkey 값에 의해 physical ordering of the file
  • 테이블의 물리적인 순서를 지정하는 인덱스
  • 테이블의 레코드를 특정 컬럼들의 값에 따라 정렬하여 저장할 수 있다
  • 키가 아닌 값으로 테이블을 물리적으로 정렬할 수 있다

  • 서로 댜ㅏ른 index 필드의 값의 수만큼 인덱스 값 존재

Secondary Index

  • key나 nonkey값을 활용한 인덱스, 물리적으로 정렬하지 않음

  • key를 사용하는 경우 : data file의 레코드 수만큼 인덱스 값 존재
  • nonkey를 사용하는 경우 : record의 수나 서로 다른 index field의 값의 개수만큼 인덱스 값 존재

Dense Key

  • 인덱스나 키의 값이 연속적으로 분포되어 있는 경우를 의미함
  • 날짜, 일련 번호 등

Nondense Key (Sparse)

  • 연속적으로 분포되지 않고 빈 공간이 있는 경우를 의미함
  • 사용자 ID 등


Second Level Index

  • 인덱스 구조를 계층화해서 더 효율적인 데이터 검색을 지원하기 위함

✅ B-Tree

참고1
참고2

  • 이진 탐색 트리와 유사하지만 한 노드당 자식 노드가 3개 이상 가능함
  • key 값을 이용해 찾고자 하는 데이터를 트리 구조를 이용해 찾는다
  • 균일성 : 어떤 값에 대해서도 같은 시간에 결과를 얻을 수 있다 (O(logN))
  • always balanced
  • multileve access structrue
  • deletion으로 낭비된 공간은 다시 접근할 수 없게 됨
  • B-tree의 p레벨에 있는 노드는 최소 p-1개의 search values를 가질 수 있다

✅ B+Tree

  • B-Tree의 확장개념
  • B-Tree는 internal 또는 branch 노드에 key와 data를 담음
  • B+Tree는 브랜치 노드에 Key만 담아두고 data는 담지 않음
  • 오직 Leaf node에만 key와 data를 저장함
  • Leaf node끼리 linked list로 연결되어 있음


Bitmap Index

참고

  • 0, 1로 인덱스 관리

0개의 댓글