인덱스란
▶ DBMS가 데이터베이스 내의 특정 레코드들을 빠르게 찾을 수 있도록 하는 데이터 구조이며, 인덱스를 통하여 질의를 수행하면 응답 시간이 향상됩니다.
즉, 인덱스는 데이터베이스에서 원하는 데이터를 조회하는데 시간을 단축시켜 주는 또 하나의 파일 데이터라 할 수 있습니다.
인덱스는 보통 <탐색 키, 레코드에 대한 포인터> 형태로 구성되어 있습니다.
디스크 접근 시간이 주기억 장치 접근 시간에 비해서 크며 대부분의 데이터베이스 응용에서 디스크 접근을 많이 요구하여, 탐색 시간을 단축해야 좋은 성능을 가질 수 있습니다.
인덱스 파일의 크기는 보통 데이터베이스 파일의 크기에 비해 훨씬 작습니다.
왜냐하면 인덱스는 여러 애트리뷰트 중에서 탐색 키에 해당하는 일부 애트리뷰트만 포함되기 때문입니다. (+ 포인터도 있음)
데이터베이스에서 인덱스가 정의된 필드를 탐색 키라고 부릅니다. (PK로 설정하면 자동으로 인덱스 설정)
또한, PK 값 말고 다른 애트리뷰트로도 보조 인덱스 개념으로 추가 인덱스를 생성할 수 있습니다. (Unique로 설정 시 보조 인덱스 설정)
- 탐색 키의 값들은 후보 키처럼 각 투플마다 반드시 고유하지 않습니다.
- 두 개 이상의 투플들이 동일한 탐색 키 값을 가질 수 도 있습니다.
위의 설명처럼 키를 구성하는 애트리뷰트뿐만 아니라 다른 애트리뷰트도 탐색 키로 사용될 수 있습니다.
(많이 검색하는 애트리뷰트라면 용량이 적은 인덱스로 만들어 탐색 시에 이용한다. -> 보조 인덱스)
인덱스를 사용하면 한 데이터베이스에서 특정 레코드를 찾기 위해서 모든 레코드들을 탐색할 필요가 없으므로 질의 시간 단축에 큰 도움이 됩니다. (보통 정렬된 경우 이진 탐색을 통해 탐색을 시도합니다.)
기본 인덱스 - 희소 인덱스
기본 인덱스란
탐색 키가 데이터베이스의 기본 키인 인덱스를 의미합니다.
기본 인덱스는 기본 키의 값에 따라 정렬된 데이터 파일입니다. (희소 인덱스로 유지 할 수 있음)
희소 인덱스란 데이터베이스를 구성하는 각 블록마다 하나의 탐색 키 값이 인덱스 엔트리에 포함된 인덱스를 의미합니다.
즉, 데이터베이스의 각 레코드마다 모든 인덱스 엔트리를 가지고 있지 않아, 저장 공간을 많이 잡아 먹지 않습니다.
클러스터링 인덱스
클러스터링 인덱스란
탐색 키 값에 따라 정렬된 데이터베이스에 대해 정의되며, 각 데이터 블록 대신에 각각의 상이한 키 값마다 하나의 인덱스 엔트리에 포함되어, 그 탐색 키 값을 갖는 첫 번째 레코드의 주소(또는 레코드가 들어 있는 블록의 주소)를 가리키는 인덱스를 의미합니다.
클러스터링 인덱스는 범위 질의에 유용합니다.
- 범위의 시작 값에 해당하는 인덱스 엔트리를 먼저 찾습니다.
- 클러스터링 인덱스에서는 인접한 탐색 키 값을 갖는 레코드들이 디스크에서 가깝게 저장되어 있어, 범위에 속하는 인덱스 엔트리들을 따라가면서 레코드들을 검색합니다.
보조 인덱스 - 밀집 인덱스
보조 인덱스란
탐색 키 값에 따라 정렬되지 않은 데이터베이스에 대해 정의되는 인덱스입니다.
하지만, 인덱스에서 탐색 키 값들은 정렬되어 있습니다. (이진 탐색을 위함)
보조 인덱스는 기본 인덱스처럼 레코드를 빠르게 찾는 동일한 목적이 있습니다.
하지만 보조 인덱스는 밀집 인덱스로 같은 수의 레코드들을 접근할 때 기본 인덱스를 통하는 경우보다 디스크 접근 횟수가 증가할 수 있습니다. (동일한 값이 있을 수도 있기 때문)
'CS > Database' 카테고리의 다른 글
[Mysql] Mysql 쿼리 최적화, 성능 최적화 - 기본편 (0) | 2024.09.21 |
---|---|
[Database] 데이터베이스 index, clustered index, non-clustered index 이해하기 (0) | 2024.09.18 |
[Mysql] mysql select 쿼리 실행 순 익히기, 스키마 create&drop (0) | 2023.10.21 |
[DB] 데이터베이스의 원칙과 ACID, RDBMS와 NOSQL의 차이점 이해하기 (0) | 2023.10.09 |
[DB] 데이터베이스 정규화란, 함수적 종속성, 이행적 종속성 - 제1정규화, 제2정규화, 제3정규화, BCNF (0) | 2022.10.09 |