首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在mysql数据库中ipv6 in整数?

如何在mysql数据库中ipv6 in整数?
EN

Stack Overflow用户
提问于 2020-03-24 18:48:53
回答 1查看 260关注 0票数 0

我有一个存储ip地址的表。为了更快的访问,我也存储了ip int。这是表结构。

代码语言:javascript
复制
CREATE TABLE `ipv6_test` (
  `ip_string` varchar(20) DEFAULT NULL,
  `ip_int` double DEFAULT null
) ;

我已经使用了以下方法来获得整数版本的ip地址。

代码语言:javascript
复制
new BigInteger(1, com.google.common.net.InetAddresses.forString(ip).getAddress());

ipv4地址一切正常,但我的代码在存储ipv6地址时开始失败。

如何在mysql数据库中存储BigInteger?我在考虑使用VARBINARY。我可以在VARBINARY列上创建索引吗?

与integer上的索引相比,VARBINARY的性能如何?

EN

回答 1

Stack Overflow用户

发布于 2020-03-24 19:18:43

对于IPv4 + IPv6存储,INET6_ATON转换为varbinary(16)。

是的,您可以使用VARBINARY作为索引。它实际上是一个没有字符编码的VARCHAR。它可能比整数慢一点,但是整数不能做同样的事情。您可能不会注意到它,所以不要过早地进行优化。它最多只有16个字符,所以不是很多。

如果您想保留一个文本版本以便于检索,请创建一个generated column,将可变二进制文件转换回来。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60829520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档