힙은 인덱스 구조로 간주됩니까, 아니면 인덱스가없는 테이블 구조입니까?


답변:


9

MSDN에서- 테이블 및 인덱스 구성 :

"SQL Server 테이블은 두 가지 방법 중 하나를 사용하여 파티션 내에서 데이터 페이지를 구성합니다.

  • 클러스터 된 테이블은 클러스터 된 인덱스가있는 테이블입니다.

데이터 행은 클러스터형 인덱스 키를 기준으로 순서대로 저장됩니다. 클러스터 된 인덱스는 클러스터 된 인덱스 키 값을 기반으로 행의 빠른 검색을 지원하는 B- 트리 인덱스 구조로 구현됩니다. 리프 수준의 데이터 페이지를 포함하여 각 인덱스 수준의 페이지는 이중 연결 목록으로 연결됩니다. 그러나 키 값을 사용하여 한 수준에서 다른 수준으로 탐색 할 수 있습니다.

  • 힙은 클러스터형 인덱스가없는 테이블입니다.

데이터 행은 특정 순서로 저장되지 않으며 데이터 페이지 시퀀스에는 특정 순서가 없습니다. 데이터 페이지가 연결 목록에 연결되어 있지 않습니다. "

-SQL Server 최적화 :

"정의 적으로 힙 테이블은 클러스터 된 인덱스가없는 테이블입니다. 힙 기반 테이블의 다른 페이지는 디스크에서 서로 다른 비 연속 영역을 차지하며 어떤 방식으로도 연결되지 않습니다."

클러스터 된 인덱스 구조 와 반대로 : "SQL Server에서 인덱스는 B- 트리로 구성됩니다. 인덱스 B- 트리의 각 페이지를 인덱스 노드라고합니다. B- 트리의 최상위 노드를 루트 노드라고합니다. 인덱스의 최하위 노드를 리프 노드라고하며 루트와 리프 노드 사이의 모든 인덱스 레벨을 총칭하여 중간 레벨이라고 합니다 클러스터 된 인덱스에서 리프 노드에는 기본 테이블의 데이터 페이지가 포함 됩니다. 중간 수준 노드에는 인덱스 행을 보유하는 인덱스 페이지가 포함되어 있으며, 각 인덱스 행에는 키 값과 B 트리의 중간 수준 페이지 또는 인덱스 리프 수준의 데이터 행에 대한 포인터가 포함되어 있습니다. 색인이 이중 연결 목록에 연결되어 있습니다. "

다른 참고 문헌 :


10

인덱스 는 행에 데이터 순서 가 있음을 의미 합니다. 힙이 그러한 순서로 작성되지 않고 순서도 유지하지 않는다는 점을 고려하면 테이블 데이터를 저장하는 방법 일뿐입니다.

힙을 지정 하는 몇 가지 예 (예 : dm_db_index_physical_stats )가 있습니다. 색인 ID를 0으로 입력해야합니다. 이것이 방금 말한 내용과 모순되는 것처럼 보이지만 이것이 API를 단순화하는 마법의 가치라고 생각합니다. 용법; 더 이상은 없습니다.


4

클러스터형 인덱스가없는 테이블 구조.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.