IT/SQL

[SQLD] 인덱스의 종류와 특징

SQLD 자격증 공부 중에 연습 문제가 나온게 있어 공유하려고 합니다.


우선 INDEX (인덱스) 란 SQL에서 어떤 역할을 하며 어떤 특징을 가지고 있는지 일반적인 사항부터 적겠습니다.



인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다. 


인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 테이블에 인덱스를 생성하지 않아도 되고 여러 개를 생성해도 된다. 


인덱스의 기본적인 목적은 검색 성능의 최적화이다. 즉, 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕는다. 


그렇지만 Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점이 존재한다.





B-TREE 인덱스 :




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

일반적으로 OLTP 시스템 환경에서 가장 많이 사용된다.




CLUSTERED 인덱스 :




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



BITMAP 인덱스 : 




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

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




기타 추가 사항이나 수정사항 생기면 다시 업로드하겠습니다!