2011-12-15 3 views
2

저는 varchar 열에 대한 색인의 의미에 대해 이해하려고합니다. 열의 길이가 150자인 경우 인덱스는 어떻게 저장됩니까? 예를 들어 int 열을 인덱싱 할 때 btree가 사용되는 방법을 알고 있지만 varchar는 여러 문자로 구성되며 기본적으로 char [1], char [2] 등으로 구성된 인덱스입니다.varchar 인덱스는 어떻게 저장됩니까?

예제를 단순하게 만들려면 값 AAA, AAB, ABB, ABC 등이 있으면 인덱스 구조는 어떻게 생겼을까요?

+0

여기에 질문을 올리면 더 나은 응답을 얻을 수 있습니다. http://dba.stackexchange.com/ – peter

답변

4

귀하의 varchar(150) 열 값은 문자열 (문자 배열이 아닌)로 사전 순 (사용자가 사용하는 정렬에 의해 정의 됨)으로 정렬됩니다. 기본적으로 정렬 된 문자열 목록이 하나 있습니다.

이 목록은 균형 잡힌 btree 방식으로 정렬됩니다. 색인의 각 레벨은 다른 레벨을 가리키고, 색인 항목의 값은 각 하위 페이지 색인 페이지에 포함되는 값 범위를 정의합니다.

이렇게하면 몇 페이지 만 읽으면 SQL Server가 인덱스의 리프 수준에 도달하여 데이터를 가져올 수 있습니다. 그래서 실제적으로 문자열은 원자의 문자열로 해석됩니다. 문자의 합성이 아닙니다.

기본적으로 색인의 구조는 SQL Server Index Basics에 표시된 것과 비슷합니다. 숫자 값 대신 색인 페이지에 문자열 값이 있습니다.

관련 문제