Я использую UPDATE, чтобы заполнить недостающее значение в m3, сопоставив m2 с n1, найдя соответствующее значение в n2 и вставив его в m3. Таблица mmm имеет 2,5 миллиона строк, а таблица nnn имеет 55 000 строк.Использование MySQL для запуска обновления на большой таблице очень медленно
Оба этих запроса работают, но проблема в производительности. Сейчас я обновляю mmm по частям. Я уменьшил nnn до его первых 10 000 строк. В этом случае этот частичный запрос завершает около 18% того, что я хочу выполнить через 7 часов. Проблема с этим подходом заключается в том, что я должен сделать примерно 10 дополнительных запросов таким образом. Я знаю, что это много вычислений, но я подумал, что есть лучший способ.
Есть ли способ ускорить этот процесс? Я ценю отзывы.
Запрос # 1
UPDATE mmm, nnn
SET mmm.m3 = nnn.n2
WHERE mmm.m2 = nnn.n1
Запрос # 2
UPDATE mmm a
INNER JOIN nnn b
ON b.n1 = a.m2
SET a.m3 = b.n2
WHERE b.n1 = a.m2
Таблица ттт (только комбинация является уникальной)
m1 m2 m3
0002-1962 0025117388
0002-1962 14644418453
0003-2417 0026708363
Таблица NNN (n1 уникален)
n1 n2
0025117388 1111-2222
14644418453 1515-2323
0026708363 1515-2323
Структура базы данных:
CREATE TABLE `mmm` (
`m1` char(9) NOT NULL DEFAULT '',
`m2` varchar(11) NOT NULL DEFAULT '',
`m3` char(9) NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `nnn` (
`n1` varchar(11) NOT NULL DEFAULT '',
`n2` char(9) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Сколько записей обычно обновляется после выполнения запроса № 1/# 2? –