2011-07-27 19 views
6

Necesito almacenar los números de Twitter tweet ID, y estos números son grandes, como 16 dígitos grandes. Me preguntaba si usar bigint en mysql para almacenarlos. o hay otra alternativa. ¿Cuántos dígitos puede manejar bigint? Intenté mirar las especificaciones, pero no estaba claro. ¿Cuáles son las limitaciones de almacenar números tan grandes en la tabla mysql? ¡Gracias!bigint en mysql

+2

Puede parecer estúpido, pero no tiene control sobre si Twitter usa números para identificar o mañana usará cadenas. Primero iré a la seguridad si no tengo control sobre el tipo de datos, y me voy a la cuerda ... Pero te estoy concediendo un poco más lejos. – Wrikken

Respuesta

6

Un bigint es 64bit, que va -9223372036854775808 a 9223372036854775807 firmado, y 0 a 18446744073709551615 sin firmar, según the mysql docs.

2

Desde el manual de MySQL

BIGINT [(M)] [UNSIGNED] [ZEROFILL]

un entero grande. La gama es firmado -9223372036854775808 a 9223372036854775807. el rango sin signo es 0 a 18446744073709551615

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

+0

Esta es una definición de qué tipo de BIGINT es, pero no responde a la pregunta de qué debería usar el OP y si debería usar BIGINT o no. – thomasrutter

4

Aunque actualmente los ID caben en una BIGINT (64 bits con signo), cuando la generación de ID está fuera de su control , es más seguro almacenar como una cadena de texto.

No solo podría crecer aún más (bueno, es poco probable que se desborde un BIGINT); pero también podría agregar un prefijo y almacenar ID de otros sistemas en la misma tabla. O tal vez una futura API podría usar IDs no numéricos

+0

+1 para la sugerencia. –

+0

A menos que desee hacer cualquiera de las muchas cosas en mysql que son mucho más rápidas usando enteros que las cadenas ... – DougW

+0

... ¿cuáles serían en realidad operaciones útiles en ID ... como? –

1

BigInt es el camino a seguir. No hay un tipo de datos más eficiente para esto. BigInt puede almacenar nubers hasta 2^64, que son aproximadamente 25 dígitos.

2

Creo que, con respecto a lo que Wrikkensaid, valdría la pena almacenar dos ID.

  • cadena (VARCHAR) Identificación del pío real para que usted tiene que (y en caso de que deciden ir a por personajes también).

  • INT que se utiliza para la materia interna, como la vinculación de tablas

2

Usted dice que está usando PHP. Debe tener en cuenta que el tipo numérico incorporado de PHP depende de la máquina y que x86 solo usa 32 bits para los valores enteros. Los valores que no sean enteros o estén fuera del rango de 32 bits se almacenarán utilizando tipos de punto flotante, que no están diseñados para ser precisos al último dígito para números muy grandes.

Si bien hay bibliotecas para PHP que permiten enteros grandes portátiles independientemente de su arquitectura, probablemente sería más fácil simplemente mantener el campo de identificación como una cadena todo el tiempo. Como no hará ninguna aritmética, simplemente tratarlo como un identificador, no debería ser un gran problema.