обновить таблицу MySQL с миллионами строк - PullRequest
0 голосов
/ 25 февраля 2012

Мне нужно конвертировать IP по INET_ATON () в таблице MySQL есть миллионы строк

UPDATE `table` SET `ip` = INET_ATON(`ip`)

Мне нужен запрос, чтобы он работал быстро и с хорошей производительностью

благодарю

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Разве вы не можете просто использовать функцию ip2long () в PHP при передаче IP-адреса в базу данных?

А потом, когда вы захотите вернуть его, оберните поле в long2ip?

1 голос
/ 25 февраля 2012

Что ж, похоже, вы пытаетесь присвоить числовое значение столбцу 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 |
+-----------------+------------+
...