[SQLD] 인덱스 기본

younghyun·2023년 6월 8일
0

SQLD

목록 보기
16/18

트리 기반 인덱스

DBMS에서 가장 일반적인 인덱스는 B-트리 인덱스
Oracle에서 트리 기반 인덱스에는 B-트리 인덱스 외에도 비트맵 인덱스, 리버스 키 인덱스, 함수기반 인덱스등이 존재

SQL server의 클러스터형 인덱스

첫째, 인덱스의 리프 페이지가 곧 데이터 페이지다.
둘째, 리프 페이지의 모든 로우(=데이터)는 인덱스 키 칼럼 순으로 물리적으로 정렬되어 저장된다.

  • 테이블 로우는 물리적으로 한 가지 순서로만 정렬될 수 있다.

[135번]

  • 테이블의 전체 데이터를 읽는 경우는 인덱스를 사용하지 않는 FTS를 사용한다.
  • 인덱스는 조회만을 위한 오브젝트이며, 삽입, 삭제, 갱신의 경우 오히려 부하를 가중한다.
  • 인덱스가 존재하는 상황에서 데이터를 입력하면, 매번 인덱스 정렬이 일어나므로 대량의 데이터를 삽입할 때는 모든 인덱스를 제거하고, 데이터 삽입이 끝난 후에 인덱스를 다시 생성하는 것이 좋다.

[136번]

  • CLUSTERED 인덱스: 인덱스의 리프 페이지가 곧 데이터 페이지이며, 리프 페이지의 모든 데이터는 인덱스 키 컬럼 순으로 물리적으로 정렬되어 저장된다.
  • BITMAP 인덱스: 시스템에서 사용될 질의를 시스템 구현 시에 모두 알 수 없는 경우인 DW 및 AD-HOC 질의 환경을 위해 설계되었으며, 하나의 인덱스 키 엔트리가 많은 행에 대한 포인터를 저장하고 있는 구조이다.

[137번]
규칙 기반 옵티마이저는 적절한 인덱스가 존재하면 전체 테이블 스캔보다는 항상 인덱스를 사용하려고 한다.

[138번]
후행 컬럼을 검색 조건에 이용해서 효율적인 검색이 불가능하다.
범위 검색보다 동등 검색 조건이 훨씬 효율적이다.

[139번]
많은 양의 데이터를 읽을 경우에는 인덱스 스캔보다 테이블 전체 스캔이 유리할 수도 있다.

[140번]
인덱스는 UPDATE 작업에는 부하가 없을 수도 있다.
SQL의 클러스터형 인덱스는 ORACLE의 IOT와 매우 유사하다.
인덱스를 활용하여 데이터를 조회할 때 컬럼의 순서는 실행 성능과 관계가 있다.

profile
🌱 주니어 백엔드 개발자입니당

0개의 댓글