count. 힙으로 이동하는 비용이 높다. 힙으로 이동하면 테이블의 페이지와 모든 열을 가져와야 하기 때문이다.
인덱스 전용 스캔(= 커버링 인덱스 스캔) vs 힙 인덱스 스캔
인덱스 전용 스캔은 필요한 모든 데이터가 인덱스에 포함되어 있어, 인덱스만으로 쿼리를 처리할 수 있는 경우에 사용된다. 이 방식은 힙을 읽을 필요가 없어 성능이 매우 뛰어나다. 그러나 쿼리에서 요구하는 데이터가 인덱스에 모두 포함되지 않은 경우에는 힙 인덱스 스캔을 사용해야 한다.
힙 인덱스 스캔은 인덱스만으로는 쿼리에서 필요한 모든 데이터를 얻을 수 없을 때 사용된다. 인덱스를 사용하여 데이터의 위치를 찾고, 힙에서 실제 데이터를 가져오는 방식이다. 이는 인덱스 전용 스캔에 비해 성능이 떨어지지만, 보다 완전한 데이터를 제공할 수 있다.
힙 인덱스 스캔은 쿼리에서 필요한 모든 데이터가 인덱스에 포함되지 않은 경우, 인덱스가 최신 상태가 아닌 경우, 복잡한 조건이 포함된 경우, 데이터가 지속적으로 수정되는 경우에 사용된다.
•
필요한 모든 데이터가 인덱스에 포함되지 않은 경우
인덱스 전용 스캔은 쿼리에 필요한 모든 데이터가 인덱스에 포함되어 있을 때만 사용할 수 있다. 그러나, 힙 인덱스 스캔은 인덱스를 통해 검색된 후, 힙(테이블)에서 추가 데이터를 가져와 필요한 모든 컬럼을 제공할 수 있다.
•
인덱스가 최신 상태가 아닌 경우
인덱스는 가끔 테이블의 데이터를 반영하지 못할 수 있으며, 이런 경우에는 힙에서 최신 데이터를 읽어와야 한다.