[SQL] Index의 기본

hyunsooSong·2022년 5월 25일
0

SQL

목록 보기
13/14
post-thumbnail

📚 Index의 기본

1. 관계형 DB의 Index 특징

📜 Index는 '조회'만을 위한 Object이며, 삽입, 삭제, 갱신의 경우 오히려 부하를 가중한다.

  • 기본 index(Primary key)는 UNIQUE & NOT NULL 제약조건을 가진다.

  • 보조 index는 UNIQUE 인덱스가 아니라면 중복 데이터의 입력이 가능하다.

  • 관계형 데이터베이스에서 가장 많이 사용되는 인덱스는 'Balance 트리'이다.

  • Index 범위 스캔은 결과가 없으면 한 건도 반환하지 않을 수 있다.

  • 인덱스는 INSERT와 DELETE 작업과는 다르게 UPDATE 작업에는 부하가 없을 수도 있다.

    • Because, index 구성 컬럼이 아닌 컬럼을 update 하면 인덱스 부하가 없다.

[인덱스를 사용하지 않는 경우]

  • 테이블 전체 데이터를 읽는 경우는 인덱스를 사용하지 않는 'FTS'를 사용한다.

  • 인덱스가 존재하는 상황에서 데이터를 입력하면, 매번 인덱스 정렬이 일어나므로 '데이터 마이그레이션' 같이 대량의 데이터를 삽입할 때는 모든 인덱스를 제거하고, 데이터 삽입이 끝난 후에 인덱스를 다시 생성하는 것이 좋다.


2. Index 종류

📜 B-Tree 인덱스

: B-Tree 인덱스는 브랜치 블록과 리프 블록으로 구성되며, 브랜치 블록은 분기를 목적으로 하고 리프블록은 인덱스를 구성하는 컬럼의 값으로 정렬된다.

  • OLTP 시스템 환경에서 가장 많이 사용된다.

  • B-트리 인덱스는 일치 및 범위 검색에 적절한 구조이다.


📜 Clustered 인덱스

: Clustered 인덱스는 인덱스의 리프 페이지가 곧 데이터 페이지이다.

  • 리프 페이지의 모든 데이터는 인덱스 키 컬럼 순으로 물리적으로 정렬되어 저장된다.

  • SQL Server 클러스터형 인덱스는 Oracle의 IOT와 매우 유사하다.


📜 Bitmap 인덱스

: Bitmap 인덱스는 시스템에서 사용될 질의를 시스템 구현 시에 모두 알 수 없는 경우인 DW 및 AD-HOC 질의 환경을 위해서 설계되었다.

  • 하나의 인덱스 키 엔트리가 많은 행에 대한 포인터를 저장하고 있는 구조이다.

profile
🥕 개발 공부 중 🥕

0개의 댓글