2009-06-09 3 views
0

uniqueidentifier 데이터 형식 열이 클러스터 된 경우 효과/table SQL Server 2005/2008의 Non Clustered 인덱스. 나는 그것이 심하게 설계된 테이블,이 문제를 피하는 방법을 읽고 무엇이 최고의 솔루션입니까?uniqueidentifier with index

답변

1

클러스터되지 않은 경우 인덱스가 너비가 넓다는 것을 의미합니다 (정수가있는 행당 4 바이트가 아니라 행당 16 바이트).

클러스터 된 경우 인덱스를 만들거나 다시 작성할 때 인덱스에 남은 여유 공간 (채우기 비율)에 따라 삽입하면 페이지가 분할됩니다.

Should I get rid of clustered indexes on Guid columns

Advantages and disadvantages of GUID/UUID database keys

Clustered primary key on unique identifier ID column in SQL Server

Improving performance of cluster index GUID primary key

0

GUID는 SQL Server의 클러스터 된 인덱스에 대한 나쁜 선택 :

SO이 주제를 논의에 대한 몇 가지 질문이 있습니다 , 값의 임의성 때문에 클러스터 에드 인덱스가 심각하게 단편화됩니다.

또한 클러스터 된 인덱스 필드가 각 클러스터되지 않은 인덱스에 복제되므로 SQL Server에서 디스크 및 메모리 공간이 상당히 낭비 될 수 있습니다.

GUID는 거의 무작위이며 거의 무작위이며 거의 고유성을 보장하지만 데이터베이스 관점에서 SQL Server에서 클러스터 된 인덱스로 사용하는 것은 매우 나쁜 선택입니다.

이것에 대한 Kim Tripp의 다양한 기사를 참조하십시오. 매우 englihtnening!

http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx

http://sqlskills.com/BLOGS/KIMBERLY/post/The-Clustered-Index-Debate-Continues.aspx

http://www.sqlskills.com/BLOGS/KIMBERLY/post/Ever-increasing-clustering-key-the-Clustered-Index-Debateagain!.aspx

공간이 남아 있으면 마크

+0

이 (i..e 채우기 팩터)는 GUID에 클러스터 된 인덱스에, 반드시만큼 나쁘지 않다 종종보고됩니다. 정기적 인 인덱스 유지 관리 및 신중하게 고려한 Fill Factor가있는 경우. 그렇다고해서 GUIDS에 클러스터 된 인덱스를 만들지 않으려 고합니다. –

+0

예 - 약간의 스마트를 사용하여 효과를 완화 할 수 있지만 클러스터 된 키인 GUID는 INT 기간보다 항상 이상적이지 않습니다. 또한 낭비되는 공간 (클러스터링 키를 포함하는 모든 비 클러스터 인덱스를 곱함)을 최적화 할 수 없습니다 ..... –