프로그래밍/MSSQL

mssql 테이블 ROW 일련번호 Int를 BigInt 전환

p-a-r-k 2018. 5. 12. 23:21
반응형

SQL Server 의 data type 별 표현 범위

데이터형식
범위
저장소
bigint-2^63(-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807)8 바이트
int-2^31(-2,147,483,648) ~ 2^31-1(2,147,483,647)4 바이트
smallint-2^15(-32,768) ~ 2^15-1(32,767)2 바이트
tinyint0 ~ 2551 바이트

주의

int 데이터 형식이에서 주 정수 데이터 형식 SQL Server합니다. bigint 데이터 형식을 사용 하기 위한 정수 값에서 지원 되는 범위를 초과 하는 경우는 int 데이터 형식입니다.

bigint 사이 맞는 smallmoney 및 int 데이터 형식 우선 순위에 있습니다.

함수 반환 bigint 매개 변수 식이 있는 경우에는 bigint 데이터 형식입니다. SQL Server다른 정수 데이터 형식에 자동으로 승격 하지 않습니다 (tinyintsmallint, 및 int)를 bigint합니다.

주의

사용 하는 경우는 +,-, *, /, 또는 % 산술 연산자의 암시적 또는 명시적 변환을 수행 하기 위해 intsmallinttinyint, 또는 bigint 상수 값을 float실제10 진수 또는 숫자 규칙, 데이터 형식 SQL Server 쿼리 자동 인지 여부에 따라 다를 데이터 형식 및 식 결과 전체 자릿수를 계산할 때 적용 됩니다.

그러므로 경우에 따라 쿼리의 비슷한 식이 다른 결과를 생성하기도 합니다. 상수 값은 먼저 변환할 쿼리 자동 없을 때 숫자, 전체 자릿수가 지정 된 데이터 형식으로 변환 하기 전에 상수의 값을 보유할 수 만큼 큰 됩니다. 예를 들어 상수 값 1은 변환할 숫자 (1, 0), 상수 값 250으로 변환 됩니다 숫자 (3, 0)합니다.

상수 값은 항상 변환할 쿼리 자동 이면 숫자 (10, 0) 최종 데이터 형식으로 변환 하기 전에. / 연산자가 들어 있는 경우 비슷한 쿼리 간에 결과 형식의 전체 자릿수뿐만 아니라 결과 값도 달라질 수 있습니다. 예를 들어 식이 포함 된 쿼리의의 결과 값 SELECT CAST (1.0 / 7 AS float), 자동 되지 않는 동일한 쿼리의 결과 값에서와 다른 자동 쿼리의 결과에 맞게 잘립니다. 숫자 (10, 0) 데이터 형식입니다.

현재 가장 많이 사용하는 테이블의 사용량 측정

  1. SALES_INFO(매출등록) : 21,980,381 (약 2천 2백만)
    1. int max value 대비 약 1/100(1.02%) 소요
  2. CUSTOMER_BC(거래처잔고) : 2,959,846 (약 3백만)
    1. int max value 대비 약 1/1000(0.13%) 소요

문제점

  1. 추후 가입자 증가로 인해서 데이터가 증가하는 경우, 더 많은 정보가 추가되면 int max value 를 초과할 수 있음

해결방안

  1. 더 큰 자료형인 BigInt 를 사용하여 해결 (Int → BigInt 로 전환하는 경우, Int 대비 약 4,294,967,298 배 정도의 큰 수를 표현할 수 있음)




참고 문서

  1. int, bigint, smallint 및 tinyint(Transact-SQL)


반응형