2013-03-06 2 views
1

관계형 데이터베이스의 코드 정의와 관련된 기본 질문이 있습니다. 의 우리가 예를 들어, 코드가 (경우 1) 가정 해 보자, 국적 코드 : 이러한 종류의 코드에 사용하는 기본 데이터 타입이 무엇sql 데이터베이스 - 숫자 또는 문자열 데이터 유형

1 
2 
... 
23 
... 
125 
... 

(? 예를 INT(3) 또는 VARCHAR(3)에 대한). 범위는 지금

1 ~ 999,의 우리가 예를 들어, 다시 고정 길이의 숫자 코드 (사례 2) 그러나이 가정 4 할 수 있습니다 :

2342 
3252 
2641 
... 

이 경우에는 무엇을 할 것 적절한 데이터 유형?

두 경우 모두 정보가 없습니다. 즉, 숫자의 위치는 의미가 없습니다. 코드는 단지 구분 ID입니다.

의견을 보내 주시면 감사하겠습니다. 감사.

+0

답변은 국제화에 사용되는 표준 약어가 있으므로 실제로 국적 코드인지 다른 언어인지에 따라 달라질 수 있습니다. "en-us". 하지만 일반적으로 정수 형식을 사용합니다. Int16, int32, smallint입니다. RDBMS에서 사용할 수있는 내용에 달려 있습니다. – Tim

답변

3

정수는 일반적으로 varchars보다 검색 속도가 빠르며 공간을 조금 차지하므로 다른 요인이없는 경우 integer로 이동하십시오.

+0

고마워요. 성능은 정수를 선택해야하는 좋은 이유입니다. – giordano

+0

@giordano 물론 성능 향상/손실은 RDBMS와 사용자가 선택하는 INT 유형에 따라 달라 지므로 확실하게 테스트하십시오. –

1

문자열이 더 크고 데이터베이스가 더 느립니다. "0289"와 같은 것을 필요로하지 않으면, 정수로 가십시오.

성능이 매우 중요하면 데이터베이스에 정수 "289"로 이벤트를 저장할 수 있으며 응용 프로그램에서 프로그래밍 방식으로 "0289"로 완료 할 수 있지만 실제로는 다릅니다.

데이터베이스의 문자열 인덱스가 선호되는 방식이 아닙니다.

+0

감사! 나는 정수를 사용할 것이다. 인덱스와 관련된 진술은 질문이 발생합니다. 인덱스는 범주 형 변수에 대해 의미가 없습니다. 즉, 정수로 변환/매핑되고 새 변수를 인덱싱해야합니까? 또는 인덱싱 된 범주 형 변수는 인덱싱되지 않은 것보다 더 잘 수행되지만 최적이 아니며 매우 크고 바쁜 데이터베이스에서 문제를 만듭니다. – giordano

관련 문제