Я пытаюсь обновить таблицу LARGE MyISAM (25 миллионов записей) с помощью CLI script. Таблица не блокируется/не используется ничем другим.
Я решил вместо того, чтобы делать одиночные запросы UPDATE для каждой записи, я мог бы также использовать функцию CASE.
Поле id
является ПЕРВИЧНЫМ. Я подозреваю, что следующий запрос должен занимать миллисекунды.
UPDATE `table` SET `uid` = CASE
WHEN id = 1 THEN 2952
WHEN id = 2 THEN 4925
WHEN id = 3 THEN 1592
END
Lo и вот, запрос обрабатывает CPU и не заканчивается навсегда.
Затем, к моему удивлению, я узнал, что запрос обновляет все 25 миллионов строк, помещая NULL в строки, которые я не указывал.
Какова цель этого? Могу ли я просто обновить MASS для определенных строк без обновления 25 миллионов строк при каждом выполнении этого запроса? Или мне нужно делать отдельные обновления, а затем совершать?