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
Respuesta
Un bigint es 64bit, que va -9223372036854775808 a 9223372036854775807 firmado, y 0 a 18446744073709551615 sin firmar, según the mysql docs.
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
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
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
+1 para la sugerencia. –
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
... ¿cuáles serían en realidad operaciones útiles en ID ... como? –
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.
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.
- 1. MySQL: bigint Vs int
- 2. ¿Convertir cadena binaria a bigint en MySQL?
- 3. BIGINT rendimiento de mysql en comparación con INT
- 4. ¿Cómo guardo un BIGINT en MySQL usando PDO?
- 5. Tipos en MySQL: BigInt (20) vs Int (20)
- 6. ¿Cómo echo un tipo a bigint en MySQL?
- 7. Rendimiento MySQL del campo varchar único frente a bigint único
- 8. hibernación mapa java largo de error de MySQL BIGINT
- 9. BIGINT Fuera de rango Error desde MySQL 5.5
- 10. Convertir BIGINT SIN FIRMAR en INT
- 11. BIGINT (bigbit) biblioteca
- 12. Convertir el valor hexadecimal en bigint
- 13. ¿Qué es exactamente "bigint" en F #?
- 14. Raíz cuadrada para Bigint en F #
- 15. pseudo_encrypt() función en plpgsql que toma bigint
- 16. Cambio de INT a BigInt
- 17. valor máximo representado por bigint
- 18. ¿Cómo hacer que Rails genere 'schema.rb' con soporte bigint para MySQL?
- 19. ¿BIGINT (8) es el número entero más grande que mysql puede almacenar?
- 20. Claves foráneas en MySQL?
- 21. ¿Es seguro almacenar ID de Tweet como BIGINT?
- 22. BIGINT valor sin signo está fuera del rango
- 23. Convierte de UniqueIdentifier a BigInt y Atrás?
- 24. ¿Es posible usar "bigint" condicionalmente con Perl?
- 25. Clojure BigInt no es Java BigInteger
- 26. SQL - downcast con seguridad BIGINT a INT
- 27. C# A Bigint al azar generador de
- 28. Convierte un bigint en una cadena en Go
- 29. ¿Cómo puedo usar bigint con C#?
- 30. Convertir nvarchar a bigint en el servidor SQL 2008
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