Производительность Mysql с многократным обновлением в ОДНОМ запросе - PullRequest
2 голосов
/ 01 ноября 2011

Мне нужно обновить около 100 000 записей в таблице MySQL (с индексами), чтобы этот процесс мог занять много времени. Я ищу решение, которое будет работать быстрее.

У меня есть три решения, но у меня нет времени на тесты скорости.

Решения:

  1. обычное ОБНОВЛЕНИЕ с каждой новой записью в цикле массива (плохая производительность)

  2. с использованием синтаксиса UPDATE, как здесь Обновить несколько строк одним запросом? - не удается найти результат выполнения

  3. с использованием LOAD DATA INFILE с тем же значением для ключевого поля, я думаю, в этом случае он будет вызывать UPDATE вместо UNSERT - я думаю, что должно работать быстрее, когда когда-либо

Знаете ли вы, какое решение лучше? Одним из важных критериев является скорость выполнения.

Спасибо.

1 Ответ

0 голосов
/ 01 ноября 2011
  • LOAD DATA INFILE самый быстрый способ сохранить большой объем данных из файла;
  • Второе решение не так плохо, как вы думаете. Особенно, если вы можете выполнить что-то вроде

    таблица обновлений задавать поле = значения где идентификатор в (list_of_ids)

  • но было бы лучше опубликовать ваш запрос на обновление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...