2013-12-20 1 views
0

저는 PK로 다른 유형을 사용하는 여러 시스템에서 작업했습니다. 일반적인 유형은 다음과 같습니다데이터 유형이 PK에 미치는 영향은 얼마나됩니까?

  • INT32
  • INT16
  • VARCHAR (다양한 크기의, 일반적으로 약 16)
  • 고유 식별자

내가 알고 있어요 그 분야에 사용되는 메모리 표시가 커지면 검색 속도가 느려집니다 (nvarchar (1024)는 매우 나쁨).

any)은 PK 컬럼에 대해 다른 데이터 유형을 사용할 때의 성능 변경 사항입니까?

+2

실제로 긴 문자열이있는 경우에만 nvarchar (1024)가 좋지 않습니다. 이것은 예약 된 공간이 아니라 최대 길이입니다. – usr

+1

나는 다음과 같이 대단한 답변을 드릴 것입니다. http://stackoverflow.com/questions/10267046/choosing-sql-server-data-types-for-maximum-speed –

+2

'nvarchar (1024)'가 될 것이라고 생각합니다. 900 바이트보다 큰 값을 절대로 삽입 할 수 없으므로 상당히 무의미한 PK 정의입니다. nvarchar (450)'어쨌든. –

답변

2

기본 키로 여러 varchar 열의 조합을 선택하면 키가 커집니다. SQL Server는 기본 키에 클러스터형 인덱스를 자동으로 추가합니다. 인덱스가 이미없는 경우 인덱스가 커지면 (정수 열보다 varchar에서 훨씬 커짐) 인덱스 저장에 사용되는 인덱스 페이지 수가 증가합니다 열쇠. 이렇게하면 인덱스를 읽는 데 필요한 읽기 횟수가 늘어나고 전반적인 인덱스 성능이 저하됩니다. 정수는 저장할 바이트 수가 적기 때문에 기본 키 인덱스 구조가 더 작아집니다. 또한 varchar가있는 기본 키 열은 정수 조인과 비교할 때 JOIN 문을 느리게 만들 수 있습니다.

uniqueidentifier는 스키마, 데이터베이스, 서버의 모든 테이블에서 고유 한 GUID 키가 필요한 경우에도 유용합니다. 그러나 그들은 4 정수의 전통적인 4 바이트 인덱스 값보다 큰 시간이 성능과 스토리지를 가질 수있다는 단점이 있습니다

또한 INT 대 GUID의 비용으로 더 많은 정보를 볼 수 있습니다 here

그리고 여기 Selecting the right datatype to improve database performance

희망이 있습니다.

관련 문제