BIGINT
은 MySql에서 사용할 수있는 가장 큰 정수입니다. 맞습니까?mysql에서 20 자리 이상의 정수가 필요할 때 어떻게해야합니까?
예를 들어 BIGINT (80)를 저장할 때해야 할 일은 무엇입니까?
어떤 경우 Twitter API 문서의 어딘가에있는 것처럼 왜이 큰 정수를 varchar
으로 저장 하시겠습니까?
하나의 유형 또는 다른 유형을 선택하는 가장 큰 이유는이 경우입니까?
BIGINT
은 MySql에서 사용할 수있는 가장 큰 정수입니다. 맞습니까?mysql에서 20 자리 이상의 정수가 필요할 때 어떻게해야합니까?
예를 들어 BIGINT (80)를 저장할 때해야 할 일은 무엇입니까?
어떤 경우 Twitter API 문서의 어딘가에있는 것처럼 왜이 큰 정수를 varchar
으로 저장 하시겠습니까?
하나의 유형 또는 다른 유형을 선택하는 가장 큰 이유는이 경우입니까?
큰 정수는 실제로 20 자리로 제한되지 않으며 64 비트로 표현할 수있는 숫자로 제한됩니다 (예 : 숫자가 20 자리 임에도 불구하고 99,999,999,999,999,999,999
은 유효한 큰 정수가 아닙니다).
이 제한이있는 이유는 네이티브 형식의 정수를 기본 하드웨어가 비교적 빠르게 조작 할 수있는 반면 숫자의 텍스트 버전은 한 번에 한 자리 수씩 처리해야하기 때문입니다.
가장 큰 64 비트 부호없는 정수 18,446,744,073,709,551,615
보다 큰 숫자를 원할 경우 varchar
(또는 다른 텍스트 필드)으로 저장해야하며 많은 수학적 조작이 필요하지 않기를 바랍니다 .
또는 더 큰 범위는 있지만 덜 정밀한 부동 소수점 숫자 또는 정수 값으로 65 자리를 제공 할 수있는 십진수를 조사 할 수 있으며 decimal(65,0)
을 열 유형으로 사용할 수 있습니다.
'ORDER'와'WHERE' 문장에 가장 적합한 것은 어느 것입니까? (적절히 정돈 된 인덱스 사용). 예를 들어'SELECT column1 FROM tableA where mybigint> N ORDER BY date LIMIT 100000'과 같이 입력하십시오. 이 경우 결과 매김에 사용됩니다. –
@Keyne, 10 진수 값은 정상적으로 작동하지만 원시 정수 계열보다 느립니다. 속도의 계층 구조는 아마도 다양한 원시 integrals, 소수점, 제로 - 정당화 varchars과 (가장 빠른 가장 느린) unjustified varchars 것입니다하지만 당신은 그물에 어떤 yobbo의 조언을 신뢰해서는 안됩니다 : 심지어) 측정, 맞춰봐. 그런 다음 필요한 범위를 제공하는 가장 빠른 방법을 사용하십시오. 특히 80 자리가 필요한 경우에는 양쪽 정렬 된 varchars를 사용하십시오 (예 : 42는 '0000000000 ... 000000042'로 저장됩니다). ... – paxdiablo
... 25 자리 숫자로, 아마 10 진수 (25,0)입니다. 19 자리 숫자는 bigint입니다. 등등. 스키마가 영원히 잠겨 있지 않습니다.어떤 시점에서 19 자리에서 25 자리로 이동해야한다면 bigint에서 십진수로 변경해야합니다. 그렇지 않으면 YAGNI 원칙이 적용될 수 있습니다. – paxdiablo
numeric(65,0)
을 지정할 수 있지만 더 커질 필요가있는 경우 varchar가 필요합니다.
하나를 선택하는 이유는 사용법, 효율성 및 공간입니다. int를 사용하는 것이 bigint보다 효율적입니다. 또는 수학을 할 필요가 있다면 숫자로 생각합니다.
저장 효율을 최대로 높이려면이 큰 정수를 an arbitrary binary string으로 저장할 수 있습니다.
하지만 그럴 가치가 있는지 확실하지 않은 이유는 응용 프로그램에서 64 비트 정수 이상을 처리해야하기 때문입니다. 또한 이유가 없으면 not the thing you want to do입니다.
더 간단하게 유지하고 varchar
을 사용하는 것이 좋습니다.
BIGINT는 정의에 의해 8 자리로 제한됩니다. DECIMAL 유형의 최대 자릿수는 64입니다. VARCHAR을 사용하여 더 큰 정밀도의 값을 저장하고 이러한 값의 직접적인 계산이 없음을 알아야합니다.
바이트가 아니라 숫자입니다. – yan
BIGINT는 정의상 8 바이트로 제한됩니다. – mozillanerd