기본 키로 여러 varchar 열의 조합을 선택하면 키가 커집니다. SQL Server는 기본 키에 클러스터형 인덱스를 자동으로 추가합니다. 인덱스가 이미없는 경우 인덱스가 커지면 (정수 열보다 varchar에서 훨씬 커짐) 인덱스 저장에 사용되는 인덱스 페이지 수가 증가합니다 열쇠. 이렇게하면 인덱스를 읽는 데 필요한 읽기 횟수가 늘어나고 전반적인 인덱스 성능이 저하됩니다. 정수는 저장할 바이트 수가 적기 때문에 기본 키 인덱스 구조가 더 작아집니다. 또한 varchar가있는 기본 키 열은 정수 조인과 비교할 때 JOIN 문을 느리게 만들 수 있습니다.
uniqueidentifier는 스키마, 데이터베이스, 서버의 모든 테이블에서 고유 한 GUID 키가 필요한 경우에도 유용합니다. 그러나 그들은 4 정수의 전통적인 4 바이트 인덱스 값보다 큰 시간이 성능과 스토리지를 가질 수있다는 단점이 있습니다
또한 INT 대 GUID의 비용으로 더 많은 정보를 볼 수 있습니다 here
그리고 여기 Selecting the right datatype to improve database performance
희망이 있습니다.
실제로 긴 문자열이있는 경우에만 nvarchar (1024)가 좋지 않습니다. 이것은 예약 된 공간이 아니라 최대 길이입니다. – usr
나는 다음과 같이 대단한 답변을 드릴 것입니다. http://stackoverflow.com/questions/10267046/choosing-sql-server-data-types-for-maximum-speed –
'nvarchar (1024)'가 될 것이라고 생각합니다. 900 바이트보다 큰 값을 절대로 삽입 할 수 없으므로 상당히 무의미한 PK 정의입니다. nvarchar (450)'어쨌든. –