繁体   English   中英

用数百万行更新MySQL表

[英]update a MySQL table with Millions of rows

我需要在mysql表中通过INET_ATON()转换ip,它具有数百万行

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 |
+-----------------+------------+

将IP地址传递给数据库时,您不仅可以在PHP中使用ip2long()函数吗?

然后,当您想返回它时,将字段包装在long2ip

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM