데이터베이스에서 쿼리가 요구하는 데이터를 찾는 방법은 여러가지가 있다.
데이터베이스는 기본적으로 데이터를 Disk에 저장한다. 데이터가 필요해지면 버퍼캐시로 데이터를 가져오는데 이렇게 가져오는 행위를
Disk IO
라고 한다.이 때 가져오는 데이터의 최소 단위를
Block IO
라고 하고 하나의 Block만 가져오는것을Single Block IO
, 여러개의 Block을 가져오는것을Multi Block IO
라고 한다.
기본적으로 인덱스는 논리적 구조의 형태를 가진다.
하지만 Block의 개념에서는 인덱스를 사용한 데이터들이 여러개의 Block으로 나뉘어 저장되고 인덱스의 정렬된 순서와는 상관이 없어진다.
따라서 정렬된 인덱스 구조를 탐색하려면 Single Block IO
방법으로 하나씩 가져와야한다.
만약 가져와야 할 데이터가 많다면 시스템 콜이 비효율적으로 많이 필요해진다. 그래서 인덱스를 사용한 방법이 항상 빠르지 않은것이다.
Index Fast Full Scan
이란 Multi Block IO
방법을 사용하면서 인덱스를 활용하는 방법이다.
인덱스의 정렬은 무시한채 여러 Block을 가져오는 방법이다.
원하는 데이터의 모든 칼럼이 인덱스에 존재하는 경우 활용되는 방법이다.