存储IP的正确方式:告别VARCHAR,性能提升十倍的秘诀
如果存储方式选错了,未来不仅浪费空间,还可能导致查询性能下降。今天我就带你一步一步搞懂如何在 MySQL 里优雅地存储 IP 地址。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
当我们在使用 MySQL 设计表结构的时候都会遇到一个经典问题:“如果要存 IP 地址,到底该用什么数据类型?”
别小看这个问题,存储方式一旦选错,不仅会浪费宝贵的存储空间,未来进行数据查询时也可能拖慢整个系统的速度。接下来,我们就深入探讨一下在 MySQL 中高效存储 IP 地址的正确方法。

为啥不能直接用字符串?
很多小伙伴的第一反应是:IP 地址不就是“192.168.0.1”这种字符串吗?那我直接用VARCHAR(15) 或者 CHAR(15) 存不就行了吗?
表面上来看没啥大的问题,但这样做有几个明显的弊端:
- 空间浪费:字符串比数字类型占用更多字节,还要额外存储长度信息。
- 查询效率低:字符串比较比数字比较要慢,索引效果也差。
- 不方便计算:比如要判断 IP 是否落在某个网段里,字符串处理起来就很麻烦。
所以,直接用字符串存 IP 地址,只能算是最简单但不优雅的做法。
那么,到底该怎么做才比较合适呢?
IPv4:用INT UNSIGNED存整数更高效
IPv4 地址其实就是一个32位的整数,比如:
192.168.0.1 → 3232235521在 MySQL 里我们完全可以用INT UNSIGNED类型来存储,既节省空间(4字节),又利于索引和范围查询。
插入时,用INET_ATON()转换:
INSERT INTO user_logs(ip) VALUES (INET_ATON('192.168.0.1'));查询时,用INET_NTOA()再转回字符串:
SELECT INET_NTOA(ip) FROM user_logs;这样就能同时兼顾空间效率和查询效率。
IPv6:用BINARY(16)存二进制
IPv6 地址更长,是128位,像这样:
2001:0db8:85a3:0000:0000:8a2e:0370:7334如果直接用字符串存,需要 CHAR(39),非常浪费空间。
更推荐的做法是用 BINARY(16) 或 VARBINARY(16) 存二进制形式。
MySQL 也有直接现成的函数:
插入时,用INET6_ATON():
INSERT INTO user_logs(ipv6) VALUES (INET6_ATON('2001:db8::1'));查询时,用INET6_NTOA() 转回:
SELECT INET6_NTOA(ipv6) FROM user_logs;占用空间16字节,支持索引,性能杠杠滴。
那么,如果既要支持 IPv4,又要支持 IPv6 怎么办呢?
这就更简单了,直接:
字段类型设为 VARBINARY(16) 或 BINARY(16),统一用 INET6_ATON()/INET6_NTOA() 存取
MySQL 会自动把 IPv4 地址映射到 IPv6 格式里,做到兼容存储,是不是非常 nice?
来个实战
以下面的建表语句为例:
CREATE TABLE user_logs (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ip BINARY(16) NOT NULL COMMENT '存储IPv4/IPv6地址',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 插入IPv4
INSERT INTO user_logs(ip) VALUES (INET6_ATON('192.168.0.1'));
-- 插入IPv6
INSERT INTO user_logs(ip) VALUES (INET6_ATON('2001:db8::1'));
-- 查询
SELECT INET6_NTOA(ip) AS ip_address FROM user_logs;一套方案,IPv4 + IPv6 通吃,相当 OK
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
荣耀 X80i 手机预售:金属中框 + 7000mAh 电池,1999 元起
荣耀 X80i 开启预售:续航与质感的新答案,1699元起 千元机市场的竞争,总在看似平静中迎来新的变局。4月2日,荣耀X80i正式开启全渠道预售,并将于4月10日全渠道开售。官方建议零售价为1999元起,但结合当前正在进行的“数码家电政府补贴”,到手价可直接下探到1699 15元起,性价比的门槛被
小米推出 2026 款 REDMI G27Q 27 英寸显示器:2K 320Hz、双 DP 2.1,1299 元
小米发布2026款Redmi G27Q 27英寸电竞显示器:2K 320Hz高刷、双DP 2 1接口,首发价1299元 近日,小米旗下品牌Redmi悄然在京东平台上架了全新2026款G27Q电竞显示器。作为一款主打高性价比的电竞装备,这款27英寸显示器核心亮点在于搭载了2K高清分辨率与320Hz极致
卢伟冰回应小米及 REDMI 部分在售产品调价:内存涨价力度远超预期,相比去年 Q1 飙升近 4 倍
关于小米产品价格调整的说明与市场观察 4月3日,小米官方发布了一则关于Xiaomi及REDMI部分产品建议零售价调整的说明。核心原因很明确:全球存储芯片等关键零部件的价格,正在经历一场持续且大幅的飙升。经过审慎评估,公司决定自2026年4月11日0时起,对部分在售产品的售价进行调整。 高管回应:涨价
vivo Pad6 Pro 平板开售:13.2 英寸 4K 屏 + 第五代骁龙 8 至尊版,4299 元起
vivo Pad6 Pro 平板开售:13 2 英寸 4K 屏 + 第五代骁龙 8 至尊版,4299 元起 先看几个关键信息点:vivo最新的旗舰平板Pad6 Pro今天正式开售了。这款产品在几个核心硬件指标上都拿出了相当有诚意的配置。它搭载了高通第五代骁龙8至尊版旗舰芯片,并且业内首次在平板上配备
OPPO Pad 5 Pro 平板现身官网,消息称新机将搭载第五代骁龙 8 至尊版处理器
OPPO Pad 5 Pro 平板官方页面曝光,或将首发骁龙 8 Gen 3 至尊版芯片 安卓平板电脑市场即将迎来一位实力强劲的新成员。近日,OPPO 在其官方网站的预约页面中,低调展示了即将发布的 OPPO Pad 5 Pro。从释放的轮廓海报来看,这款新平板明确支持悬浮磁吸键盘和智能手写笔,直接
- 日榜
- 周榜
- 月榜
相关攻略
2015-03-10 11:25
2015-03-10 11:05
2021-08-04 13:30
2015-03-10 11:22
2015-03-10 12:39
2022-05-16 18:57
2025-05-23 13:43
2025-05-23 14:01
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

