在 MySQL 中,如果是以字符串的形式存储 IP 地址,在正常格式下,最小长度为 7 个字符 (0.0.0.0),最大长度为 15 个 (255.255.255.255),我们通常会使用 varchar(15) 来存储,这意味着每行需要多耗费更多字节的额外资源。
如果该字段加了索引,也会扩大索引文件的大小,缓存数据需要使用更多内存来缓存数据或索引,从而可能将其他更有价值的内容推出缓存区。执行 SQL 对该字段进行 CRUD 时,也会消耗更多的 CPU 资源。
当存储 IPv4 的地址时,最好使用32位的整数来存储IP地址,而不是使用字符串。
MySQL提供了两个方法来处理IP地址:
- inet_aton:将IP转换成整数
- inet_ntoa:将数字反向转换成IP
示例:
SELECT INET_ATON('192.168.100.1');
-- 3232261121
SELECT INET_NTOA(3232261121);
-- 192.168.100.1