SQLD 자격증 공부 중에 연습 문제가 나온게 있어 공유하려고 합니다.
우선 INDEX (인덱스) 란 SQL에서 어떤 역할을 하며 어떤 특징을 가지고 있는지 일반적인 사항부터 적겠습니다.
인덱스는 원하는 데이터를 쉽게 찾을 수 있도록 돕는 책의 찾아보기와 유사한 개념이다.
인덱스는 테이블을 기반으로 선택적으로 생성할 수 있는 구조이다. 테이블에 인덱스를 생성하지 않아도 되고 여러 개를 생성해도 된다.
인덱스의 기본적인 목적은 검색 성능의 최적화이다. 즉, 검색 조건을 만족하는 데이터를 인덱스를 통해 효과적으로 찾을 수 있도록 돕는다.
그렇지만 Insert, Update, Delete 등과 같은 DML 작업은 테이블과 인덱스를 함께 변경해야 하기 때문에 오히려 느려질 수 있다는 단점이 존재한다.
B-TREE 인덱스 :
브랜치 블록과 리프 블록으로 구성되며, 브랜치 블록은 분기를 목적으로 하고 리프블록은 인덱스를 구성하는 컬럼의 값으로 정렬된다.
일반적으로 OLTP 시스템 환경에서 가장 많이 사용된다.
CLUSTERED 인덱스 :
인덱스의 리프 페이지가 곧 데이터 페이지이며, 리프 페이지의 모든 데이터는 인덱스 키 컬럼 순으로 물리적으로 정렬되어 저장된다.
BITMAP 인덱스 :
시스템에서 사용될 질의를 시스템 구현 시에 모두 알 수 없는 경우인 DW 및 AD-HOC 질의 환경을 위해서 설계되었으며,
하나의 인덱스 키 엔트리가 많은 행에 대한 포인터를 저장하고 있는 구조이다.
기타 추가 사항이나 수정사항 생기면 다시 업로드하겠습니다!
'IT > SQL' 카테고리의 다른 글
스프링 게시판 댓글갯수를 구하기 위한 서브쿼리(Sub Query) (1) | 2019.07.23 |
---|---|
제31회 SQLD(SQL 개발자 자격시험) 합격 후기 (2) | 2018.12.29 |
[SQLD] 정규화와 반정규화의 차이점 분석 (0) | 2018.11.21 |
Sql의 쿼리 실행 과정 및 순서 (0) | 2018.11.08 |