Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment stocker une IP dans mySQL

Je suggérerais de regarder quel type de requêtes vous exécuterez pour décider du format que vous adopterez.

Ce n'est que si vous avez besoin d'extraire ou de comparer des octets individuels que vous devrez envisager de les diviser en champs distincts.

Sinon, stockez-le sous la forme d'un entier de 4 octets. Cela a également l'avantage de vous permettre d'utiliser MySQL intégré INET_ATON() et INET_NTOA() fonctions.

Performances par rapport à l'espace

Stockage :

Si vous ne prenez en charge que les adresses IPv4, votre type de données dans MySQL peut être un UNSIGNED INT qui n'utilise que 4 octets de stockage.

Pour stocker les octets individuels, vous n'auriez qu'à utiliser UNSIGNED TINYINT types de données, pas SMALLINTS , ce qui utiliserait 1 octet chacun de stockage.

Les deux méthodes utiliseraient un stockage similaire avec peut-être un peu plus pour des champs séparés pour certains frais généraux.

Plus d'informations :

Performances :

L'utilisation d'un seul champ donnera de bien meilleures performances, il s'agit d'une seule comparaison au lieu de 4. Vous avez mentionné que vous n'exécuterez des requêtes que sur l'intégralité de l'adresse IP, il ne devrait donc pas être nécessaire de séparer les octets. Utilisation de INET_* Les fonctions de MySQL feront la conversion entre le texte et les représentations entières une fois pour la comparaison.