我需要通过INET_ATON()转换ip 在 mysql 表中有数百万行
UPDATE `table` SET `ip` = INET_ATON(`ip`)
我需要查询速度快且性能良好
谢谢
最佳答案
看来您正在尝试将数值分配给 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 |
+-----------------+------------+
关于php - 更新包含数百万行的 MySQL 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440928/