2012-12-27 2 views
1

정체성과 기본 키에 대한 기본 클러스터 된 인덱스를 생성하는 이유는, SSMS는 ID 열에 대한 클러스터 된 인덱스를 만들었습니다. 그래서, 내 질문에 왜 아닌 클러스터 된 인덱스가?는 혼란 : SSMS 난 그냥 놀랍게도를 들어 다음 스크립트</p> <pre><code>CREATE TABLE Test ( ID INT IDENTITY PRIMARY KEY, Info nvarchar(50) ) </code></pre> <p>을 실행

이진 트리로 인해 클러스터 된 인덱스를 사용하는 대신 X 값으로 ID를 찾는 것이 훨씬 빠르기 때문에이 경우 비 클러스터형 인덱스를 사용하는 것이 더 좋습니다. 값이 어떻게 든 그룹화되는 인덱스. 또한 데이터 수신에 관해 생각해 보면 ID에 빠르게 액세스해야합니다. 작성된 많은 기사에서와 같이 이진 트리는 특정 ID 또는 복수 ID를 금식하는 방식입니다. 그 외에도 대부분의 경우 어떤 테이블의 기본 키도 자동 증가 값을 가진 ID라는 것을 알 수 있습니다. 따라서 자동 증가 원리의이 접근 방식을 사용하는 것이 일반적입니다.

따라서 클러스터되지 않은 키를 사용하면 이점이 무엇이며 SSMS에서이 기본값이 사용되는 이유는 무엇입니까?

+4

클러스터 된 인덱스 **는 ** 이진 트리입니다. –

답변

3

기본적으로 테이블의 기본 키는 클러스터 된 인덱스로 백업됩니다. 이는 SQL Server의 기본 동작입니다. 필요한 경우 변경할 수 있습니다 :

CREATE TABLE Test 
(
    ID INT IDENTITY PRIMARY KEY NONCLUSTERED, 
    Info nvarchar(50) 
) 

하지만 특히 INT IDENTITY 경우, 즉 당신이 당신의 테이블에 상상할 수있는 거의 완벽한 클러스터 된 인덱스입니다 - 그래서 "좋은 것"이다는 SQL 서버는이 기본 선택합니다. (- - 느린 모든면에서 미세 조정에 더 복잡 대안이 있기 때문에) -

모든 SQL Server의 "심각한"테이블은 잘 선택 클러스터 된 인덱스를 주어야한다고 대다수가 생각과 작은 (4 바이트), 정적 (변경하지 않음), INT IDENTITY과 같은 고유 한 열이이 테이블의 클러스터 된 인덱스로 이상적입니다.

당신이 현명하게 클러스터링 키를 선택하고, 그렇게하는 것이 매우 중요한 이유, 당신은 킴벌리 트립은이 모든 주제에 대해 말하기를 확인하는 방법에 대한 자세한 내용을 원한다면 :

관련 문제