我需要通过INET_ATON()转换ip 在mysql表中有数百万行
UPDATE `table` SET `ip` = INET_ATON(`ip`)
我需要查询才能获得快速且良好的性能
谢谢
答案 0 :(得分:1)
好吧,您似乎正在尝试为char列分配数值。正如MichaelH所说,如果您要使用的数值超过地址值,那么您应该考虑以该格式存储数字。
但是,您可以存储这两个值以提高查询性能:
CREATE TABLE t (
address char(15),
number int unsigned default 0
);
INSERT INTO t (address) VALUES
('255.255.255.255'),
('0.0.0.0'),
('1.0.0.0');
update t set number = inet_aton(address);
select * from t;
这将导致:
+-----------------+------------+
| ADDRESS | NUMBER |
+-----------------+------------+
| 255.255.255.255 | 4294967295 |
| 0.0.0.0 | 0 |
| 1.0.0.0 | 16777216 |
+-----------------+------------+
答案 1 :(得分:1)
在将IP地址传递给数据库时,您是否只能在PHP中使用ip2long()函数?
然后当你想要返回它时,将字段包装在long2ip
?