Mysql
 sql >> Database >  >> RDS >> Mysql

Come memorizzare un IP in MySQL

Suggerirei di esaminare il tipo di query che eseguirai per decidere quale formato adottare.

Solo se hai bisogno di estrarre o confrontare singoli ottetti, dovresti considerare di dividerli in campi separati.

In caso contrario, salvalo come numero intero di 4 byte. Questo ha anche il vantaggio di permetterti di usare il MySQL integrato INET_ATON() e INET_NTOA() funzioni.

Prestazioni vs. Spazio

Archiviazione:

Se intendi supportare solo indirizzi IPv4, il tuo tipo di dati in MySQL può essere un UNSIGNED INT che utilizza solo 4 byte di memoria.

Per memorizzare i singoli ottetti è sufficiente utilizzare UNSIGNED TINYINT tipi di dati, non SMALLINTS , che consumerebbe 1 byte ciascuno di spazio di archiviazione.

Entrambi i metodi userebbero un'archiviazione simile con forse un po' di più per campi separati per un po' di sovraccarico.

Maggiori informazioni:

Rendimento:

L'uso di un singolo campo produrrà prestazioni molto migliori, è un singolo confronto invece di 4. Hai detto che eseguirai query solo sull'intero indirizzo IP, quindi non dovrebbe essere necessario mantenere separati gli ottetti. Utilizzando INET_* le funzioni di MySQL eseguiranno la conversione tra il testo e le rappresentazioni intere una volta per il confronto.