고객 중 하나가 일부 열에 DECIMAL(18,0)
SQL Server 2008R2 데이터베이스 의 데이터 유형 을 사용 합니다. 컬럼은 상당히 느리게 성장하기 때문에 최근 DECIMAL(5,0)
스토리지를 다시 확보하기 위해 데이터 유형을 변경하도록 제안했습니다 .
MSDN 라이브러리 에 따르면 DECIMAL(5,0)
데이터 유형 의 저장 공간은 데이터 유형과 마찬가지로 DECIMAL(9,0)
5 바이트입니다. INT
는 1 바이트 작지만 저장할 수있는 -99,999 ~ 99,999 대신 -2 ^ 31 ~ 2 ^ 31 범위의 모든 항목을 DECIMAL(5,0)
저장할 수 있습니다. DECIMAL
5 바이트 ( DECIMAL(9,0)
)에 맞는 가장 큰 값 조차도 -999,999,999에서 999,999,999 사이의 정수만 저장할 수 있습니다 ( 범위의 절반보다 적은 INT
4 바이트).
나는 DECIMAL
over 를 사용 하는 두 가지 "이점"을 생각할 수 있습니다 INT
.
- 더 많은 저장 공간을 사용하지 않고 확장 성을 추가 할 수있는 기능
- 데이터 유형을 변경하지 않고 정밀도를 최대 38 자리로 확장하는 기능
그러나 이것들은 내 의견으로는 실질적인 이점이 아닙니다.
- 정수에 스케일을 추가하는 것은 매우 소수의 경우에만 의미가 있습니다 (대부분의 경우 스케일이 차이가 나는 경우 사전에 추가 할 수도 있음)
- SQL Server는 모든 정밀도 / 스케일 조합을 다른 데이터 유형으로 간주하므로 정밀도 또는 스케일을 증가시킬 때 데이터 유형이 단독으로 남아 있지 않습니다.
이것은 나를 궁금하게합니다 : DECIMAL(5,0)
정수 에 대한 데이터 유형 의 추가 이점은 무엇입니까?
decimal(x,0)
정수형과의 또 다른 차이점은 산술적 분할로 나타납니다. int를 int로 나누면 int를 얻습니다. decimal (x, 0)을 int로 나누면 decimal (x + 6,6)이됩니다.