|
1
25
我建议查看您将运行的查询类型,以决定采用哪种格式。 只有在需要拔出或比较各个八位字节时,才需要考虑将它们分成单独的字段。 性能与空间存储:
要存储单个八位字节,只需使用
这两种方法都将使用类似的存储,可能会稍微多一些用于单独的字段,以节省一些开销。 更多信息:
使用单个字段将产生更好的性能,这是一个单一的比较,而不是4。您提到,您将只对整个IP地址运行查询,因此不需要将八位字节分开。使用
|
|
|
2
14
A.
储存
我无法想象会发生什么情况
还请注意,如果您要发出如下查询:
哪里
这些查询用于确定给定的
为了使这些查询有效,您应该将整个范围存储为
有关如何操作的更多详细信息,请参阅我的博客中的这篇文章: |
|
|
3
4
native data type 为此。 更严重的是,我会陷入“一个32位整数”阵营。IP地址只有在将四个八位字节考虑在一起时才有意义,因此没有理由将八位字节存储在数据库中的单独列中。您会使用三个(或更多)不同的字段存储电话号码吗? |
|
|
4
3
对我来说,使用单独的字段听起来并不特别明智——就像将zipcode拆分为多个部分或电话号码一样。
|
|
|
5
1
(PERL)
|
|
|
6
1
对于ipv4和ipv6的兼容性,请使用VARBINARY(16),ipv4将始终是二进制的(4),ipv6将始终是二进制的(16),因此VARBINARY(16)似乎是支持这两者的最有效方式。要将其从普通可读格式转换为二进制格式,请使用INET6_-ATON('127.0.0.1'),反之,请使用INET6_-NTOA(二进制) |
|
|
7
0
老线程,但为了读者的利益,考虑使用IP2LUN。它将ip转换为整数。 基本上,当存储到DB时,您将使用ip2long进行转换,然后在从DB检索时使用long2ip进行转换。DB中的字段类型将为INT,因此与将ip存储为字符串相比,可以节省空间并获得更好的性能。 |