Sugeriría ver qué tipo de consultas ejecutará para decidir qué formato adoptar.
Solo si necesita extraer o comparar octetos individuales, debería considerar dividirlos en campos separados.
De lo contrario, guárdelo como un entero de 4 bytes. Eso también tiene la ventaja de permitirle usar MySQL incorporado INET_ATON()
y INET_NTOA()
funciones.
Rendimiento versus espacio
Almacenamiento:
Si solo va a admitir direcciones IPv4, su tipo de datos en MySQL puede ser un UNSIGNED INT
que solo usa 4 bytes de almacenamiento.
Para almacenar los octetos individuales, solo necesitaría usar UNSIGNED TINYINT
tipos de datos, no SMALLINTS
, que consumiría 1 byte cada uno de almacenamiento.
Ambos métodos usarían un almacenamiento similar con quizás un poco más para campos separados para algunos gastos generales.
Más información:
- Resumen de tipos numéricos
- Tipos enteros (valor exacto) - INTEGER, INT , PEQUEÑO, PEQUEÑO, MEDIANO, GRANDE
Rendimiento:
El uso de un solo campo producirá un rendimiento mucho mejor, es una comparación única en lugar de 4. Mencionó que solo ejecutará consultas en la dirección IP completa, por lo que no debería ser necesario mantener los octetos separados. Usando el INET_*
Las funciones de MySQL harán la conversión entre el texto y las representaciones enteras una vez para la comparación.