Iba a usar varchar(20)
, pero me preguntaba qué debería hacer si debería hacer INT y quitarle los períodos. ¿Qué sería mejor y por qué?¿Qué tipo debo almacenar direcciones IP para MySQL?
Respuesta
Supongo que solo le interesan las direcciones IPv4, no IPv6.
Usaría INT UNSIGNED
para la columna, y luego usar INET_ATON
y INET_NTOA
para convertir de ida y vuelta entre la representación textual y el valor int.
mysql> SELECT INET_ATON('192.168.10.50');
+----------------------------+
| INET_ATON('192.168.10.50') |
+----------------------------+
| 3232238130 |
+----------------------------+
1 row in set (0.00 sec)
mysql> SELECT INET_NTOA(3232238130);
+-----------------------+
| INET_NTOA(3232238130) |
+-----------------------+
| 192.168.10.50 |
+-----------------------+
1 row in set (0.00 sec)
tienda IPV4 como unsigned int
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-aton
http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_inet-ntoa
@ f00 - ¿entonces para v6? – ajreal
Interesante, no sabía que esas funciones existían. –
@ajreal - binario o x2 bigint sin firmar –
Si usted está realmente preocupado por el ahorro de espacio, se puede embalar en un int de 4 bytes. Cada bloque de una dirección IP IPv4 puede tener 256 valores posibles, que simplemente es el rango de un solo byte.
- Editar -> Lo que acabo de describir se puede hacer con las funciones de MySQL f00 vinculados en su respuesta
Sin embargo, almacenarla como una cadena ahorrará un poco de tiempo de codificación. Honestamente, a menos que esté haciendo esto a gran escala, la optimización de un formato de almacenamiento más denso no tendrá importancia.
- 1. La forma más eficiente de almacenar direcciones IP en MySQL
- 2. ¿Cuál es el tipo de datos ideal para almacenar la dirección IP en una tabla mysql?
- 3. ¿Qué tipo de datos usar en MySQL para almacenar imágenes?
- 4. ¿Qué tipo de datos debo usar para almacenar valores monetarios?
- 5. ¿Qué tipo de datos MySQL usar para una dirección IP?
- 6. ¿Diferentes navegadores, direcciones IP diferentes?
- 7. Comprobando las direcciones IP
- 8. MySQL: ¿la mejor manera de almacenar direcciones MAC?
- 9. Dns.GetHostEntry devuelve varias direcciones IP
- 10. Vea qué sitios usan qué direcciones IP en IIS 7
- 11. Asociar direcciones IP con países
- 12. Ordenando direcciones IP en vim
- 13. UserHostAddress da direcciones IP incorrectas
- 14. rangos de direcciones IP privadas
- 15. ¿Cómo crear un registro SPF para múltiples direcciones IP?
- 16. Tamaño para almacenar direcciones IPv4, IPv6 como una cadena
- 17. Qué tipo de datos de columna debo usar para almacenar grandes cantidades de texto o html
- 18. Qué tipo de datos de SQL Server debo usar para almacenar un byte []
- 19. tipo de datos mysql para almacenar mes y año solamente
- 20. MySQL: ¿tipo de datos más eficiente para almacenar notas largas?
- 21. ¿Qué debo hacer para almacenar objetos en RavenDB?
- 22. Almacenamiento de direcciones IPv6 en MySQL
- 23. ¿Qué tipo de variable debo usar para guardar una imagen?
- 24. ¿Por qué request.env ['REMOTE_ADDR'] devuelve dos direcciones IP?
- 25. Bash lista completa de direcciones IP para un dominio
- 26. ¿Qué tipo de datos XML debo usar para moneda/dinero?
- 27. ¿La mejor manera de almacenar IP en la base de datos?
- 28. Técnicas de detección de ubicación para direcciones IP
- 29. IP todas las direcciones en una subred
- 30. Direcciones IP para dominios y sus subdominios de la misma?
Depende de qué operaciones va a realizar en los datos. – zerkms
No puedes quitar los períodos o deberías rellenar cada octeto con ceros para que tengan 3 caracteres de largo. De lo contrario, los IP 192.168.45.5 y 192.168.4.55 se verían igual. Cuando la gente sugiere usar un int (32 bits), significa que toma cada octeto (8 bits cada uno) y los empaqueta en un solo int. –