인덱스는 데이터베이스에서 효율적인 질의 처리를 위한 중요 요소다. 인덱스가 없다면, 모든 질의는 사용하는 모든relation의 전체 내용을 읽어야 하며(seq scan), 이러한 방식은 몇 개의 레코드만 요구하는 질의에 대해 매우 비효율이다.
인덱스 순차 파일(index-sequential file): search key에 대해 기본 인덱스를 가지는 파일로, search key의 값에 따라 연속적인 순서로 레코드가 정렬되어 있다.
한 search key에 대한 모든 index entries는 한 sequential file(index file)로 저장된다. ⇒ index file은 search key 순서에 따라 index entries가 연속적으로 저장된 sequential file이다.
[13장] sequential file
(정의)
- search key의 값에 따라 레코드가 연속적으로 정렬된 파일
(현실)
- 한 블록 내의 레코드는 물리적으로 연속하여 저장되지 않을 수 있다. (free list)
- 연속된 레코드 중 일부가 다른 블록에 저장될 수 있다. (overflow block)
[참고] 한 file에 속하는 여러 block은 물리적으로 연속적으로 저장되어 있지 않을 수 있다. (즉, random access를 가정한다.)
multilevel index에서 각 level index는 하나의 file, 한 개 이상의 block에 저장된다.
<aside> 📌
sequential scan: 파일에 저장된 레코드를 블록 단위로 차례대로 읽는 방식
</aside>
데이터를 물리적 저장 순서대로 읽으며, 반드시 정렬된 순서대로 읽는 것은 아니다. 정렬이 필요한 경우에는 추가적인 정렬 작업이 필요하다. 🤖
index-sequential file 구조의 주요 단점은 "파일이 커질수록" 인덱스를 찾아서 그 "데이터를 연속으로 스캔하는 성능이 감소"하는 것이다.