Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como armazenar um IP no mySQL


Sugiro analisar que tipo de consultas você executará para decidir qual formato adotar.

Somente se você precisar extrair ou comparar octetos individuais, você deve considerar dividi-los em campos separados.

Caso contrário, armazene-o como um inteiro de 4 bytes. Isso também tem o bônus de permitir que você use o MySQL integrado INET_ATON() e INET_NTOA() funções.

Desempenho x espaço


Armazenamento:

Se você vai suportar apenas endereços IPv4, seu tipo de dados no MySQL pode ser um UNSIGNED INT que usa apenas 4 bytes de armazenamento.

Para armazenar os octetos individuais, você só precisa usar UNSIGNED TINYINT tipos de dados, não SMALLINTS , que usaria até 1 byte cada de armazenamento.

Ambos os métodos usariam armazenamento semelhante com talvez um pouco mais para campos separados para alguma sobrecarga.

Mais informações:

Desempenho:

Usar um único campo produzirá um desempenho muito melhor, é uma comparação única em vez de 4. Você mencionou que só executará consultas em todo o endereço IP, portanto, não deve haver necessidade de manter os octetos separados. Usando o INET_* As funções do MySQL farão a conversão entre as representações de texto e inteiro uma vez para a comparação.