2015-01-20 11 views
-3

차량을 저장하는 테이블이있는 데이터베이스를 설계하고 있으며 차량 식별 번호가 173 자의 영숫자 일련 번호이므로 내 아이디어는 데이터 유형이 char(17) 인 기본 키로 사용하는 것입니다.SQL Server가있는 테이블에 VIN 번호를 저장하는 데 기본 키로 char (17)을 사용하면 성능에 어떤 영향을 줍니까?

수많은 다른 테이블은 VIN을 외래 키로 갖습니다.

VIN 번호를 매개 변수로 사용하여 많은 수의 검색어/검색어가 차량과 그와 관련된 다른 데이터를 추적하는 방식이므로 여러 가지 검색어/검색어가 실행됩니다. 그것을 사용하는 일부 쿼리 조인 및 기타되지 이후 (내가 잘 모르는 것 같아요 또는 기타 합병증) 심각한 성능 저하를 야기하는 경우

차량 등록 번호가 변경되지 않습니다,하지만 확실 해요 :/

VIN을 기본 키로 사용하면 고유 제한/추가 인덱스를 생성 할 필요가 없습니다. 그러나 char(17)int 이외의 기본 키가 기본 키가 가정용으로 최적화되어 있어야합니다.

또한 200 % 확신 할 수없는 것은 모든 VIN 번호가 동일한 길이 (거의 없음)이지만 그 경우에는 varchar(17)을 사용하면 어떻게 whol에 영향을 미칠 것입니까? e 상황 ... 전혀.

감사합니다.

+0

** 주로 의견 기반 ** 많은 좋은 질문들이 전문가의 경험을 토대로 어느 정도의 의견을 제시하지만,이 질문에 대한 답변은 사실, 참고 문헌 또는 특정 전문 지식보다는 의견을 거의 기반으로하는 경향이 있습니다 ._ – melancia

+0

대부분의 정수 타입이 프라이 머리 키보다 선호되거나 VIN 번호를 프라이 머리 키로 사용하여 compositeprimary 키를 만들거나 고유하게 두는 경우 –

+0

데이터 오류는 어떻게됩니까? 예 : a) VIN이 동일한 차량 2 대가 필요합니다. b) 누군가 필요합니다. VIN을 변경하려면 c) VIN이없는 차량이 있습니까? 이들은 다른 합병증에 해당합니다. – Arvo

답변

0

..

나는 항상 기본 키로 INT를 사용합니다. 대부분의 경우 기본 키는 항상 클러스터 된 인덱스입니다. 4 바이트 대 17 바이트이며 VIN 열에 클러스터되지 않은 색인을 항상 넣을 수 있습니다. 일을 간단하고 명확하게하십시오. 그래도 제 의견입니다.

0

제 생각에는 성능과 관련해서는 실제로 좋은 생각이 아닙니다. 그것은 비록 당신이 데이터베이스에 얼마나 많은 차를 저장할 것인지에 달려 있습니다. 반면, 응용 프로그램과 쿼리가 VIN을 매개 변수로 사용하는 경우 열이 인덱싱되므로 고유해야합니다.

희망이

PS를하는 데 도움이 : akward이 주제에 대한 다른 사람의 제안을보고! 그냥 개인적인 의견