ens*_*are 69 mysql sql ip-address
在MySQL中存储和检索IP地址的最有效方法是什么?现在我正在做:
SELECT * FROM logins WHERE ip = '1.2.3.4'
Run Code Online (Sandbox Code Playgroud)
ip是一个VARCHAR(15)字段.
有一个更好的方法吗?
Dan*_*llo 109
对于IPv4地址,您可能希望将它们存储为a int unsigned并使用INET_ATON()和INET_NTOA()函数从其数值返回IP地址,反之亦然.
例:
SELECT INET_ATON('127.0.0.1');
+------------------------+
| INET_ATON('127.0.0.1') |
+------------------------+
| 2130706433 |
+------------------------+
1 row in set (0.00 sec)
SELECT INET_NTOA('2130706433');
+-------------------------+
| INET_NTOA('2130706433') |
+-------------------------+
| 127.0.0.1 |
+-------------------------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
Dea*_*ing 58
如果您只想存储IPv4地址,则可以将它们存储在32位整数字段中.
如果你也想支持IPv6,那么一个字符串可能是最容易阅读/使用的方式(虽然你可以在技术上将它们存储在一个16字节的VARBINARY()字段中,但是尝试生成SQL语句来选择它会很烦人IP地址"手工")
无论您使用什么最容易使用的东西。大小或速度问题不是问题,除非您通过分析知道这是一个问题。在某些情况下,如果您需要进行部分匹配,则使用字符串可能更容易使用。但作为空间或性能问题,除非您确实有理由担心,否则不必担心。
| 归档时间: |
|
| 查看次数: |
48128 次 |
| 最近记录: |