1

나는 Non Clustered Index에 대해 "Nonclustered 인덱스는 인덱스 된 열의 값과 실제 데이터 행을 가리키는 행 로케이터의 값만 포함하고 데이터 행 자체는 포함하지 않습니다. 쿼리 엔진은 실제 데이터를 찾으려면 추가 단계를 수행해야합니다. "비 클러스터형 인덱스의 행 찾기

쿼리 - Row Locator으로 명확하지 않습니다. 나는 그것이 어떤 Primary key도 아닌 것으로 가정하고있다. 백그라운드에서 행을 고유하게 식별하기 위해 Row-Locator과 관련된 작업이 있습니다.

답변

6

테이블에 고유 클러스터 된 인덱스이 있으면 "행 로케이터"는 클러스터형 인덱스의 열로 구성됩니다.

고유하지 않은 클러스터 된 인덱스의 경우 "행 로케이터"는 클러스터 된 인덱스의 열과 SQL Server가 참조를 고유하게 만들기 위해 추가하는 새로운 필드로 구성됩니다. 새로운 필드는 사용자에게 보이지 않습니다. 그것은 "uniqueifier"라고 불리며 4 바이트로 구성됩니다.

클러스터 된 인덱스 (일명 힙)이없는 테이블 에서 "행 로케이터"는 RID 또는 행 식별자입니다. RID는 실제 위치를 가리 킵니다. 파일 식별자 (ID), 페이지 번호 및 페이지의 행 번호로 구성됩니다.

은 "행 로케이터"중 하나 개는 실제 결과는 Full details on this MSDN page.

+0

@PankajGarg : 실제로는 클러스터 된 인덱스입니다. [MSDN] (http://msdn.microsoft.com/ko-kr/library/ms188783.aspx)을 참조하십시오.) : "클러스터 된 인덱스가 테이블에 정의되어 있으면 비 클러스터형 인덱스에는 항상 클러스터 된 인덱스 열이 포함됩니다." – Andomar

+0

행 로케이터에 대한 기본 키 열 정보를 수집 할 때 우선 순위가 포함됩니까? 나는 이것이 Primary/Alternate/Candidate 키가 될 수 있고 이것들이 행을 유일하게 식별 할 수 있기 때문에 이것을 묻는다. – Nilish

0

@Nilish 인덱스 :)의 많은 테이블을위한 작은 차 키를 가지고하는 것이 합리적이다 "후보 키는"사용되는 용어입니다 기본 키에 사용할 열을 결정할 때. 그리고 SQL은 그것에 대해 아무 것도 모른다. "대체 키"가 기본 키에 사용할 수있는 또 다른 가능한 열 집합이라는 점을 제외하고는 무엇을 의미하는지 알지 못합니다.

그래서 SQL 내에서 이들에 대한 "우선 순위"개념이 없습니다. SQL은 기본 키를 작성하여 알릴 때까지 레코드를 고유하게 식별하는 컬럼을 알지 못합니다. 키를 정의한 후 SQL은이를 사용합니다.

테이블에 인덱스 (힙)가 없거나 고유하지 않은 클러스터 된 인덱스 또는 고유 한 클러스터 된 인덱스가 있습니다. 다른 가능성은 없습니다. (기본 키는 일반적으로 고유 한 클러스터 된 인덱스입니다.)

관련 문제