php - 更新包含数百万行的 MySQL 表

标签 php mysql mysql-management

我需要通过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/

相关文章:

PHP 语句应该返回多个对象,但只返回一个

PHP MySQL : Data is getting reset to 0's when trying to edit

php - Laravel 与 PDO::FETCH_ASSOC 类似的方法是什么?

mysql - SQL查找列的最大值,其中另一列具有最大但可重复的值

php - PHP 的 mcrypt_decrypt() 需要什么?

javascript - 使用 Javascript 访问 MyBB PHP 变量

JavaScript字符串压缩+PHP解压

mysql - 减少 ubuntu@aws 微实例上 mysql 的内存消耗

mysql - 使用 yii 框架测试和生产服务器部署 - 同步数据库更改