Давайте предположим, что у меня есть таблица с двумя столбцами A и B. Существует индекс для столбца A, но не для столбца B. Я хочу выполнить несколько миллионов запросов, таких как:
UPDATE t1 SET b=b1 WHERE a=a1;
UPDATE t1 SET b=b2 WHERE a=a2;
....
Естьот 1 до 100 000 строк, соответствующих каждому уникальному значению a
.В среднем это около 100.
Для каждого оператора обновления в среднем 60% строк не будут изменены, потому что для этих строк b
уже имеет желаемое значение.Для 30% обновлений ни одна из подходящих строк не будет изменена.
Имеет ли смысл использовать подобные операторы?
UPDATE t1 SET b=b1 WHERE a=a1 AND b<>b1;
Ускорит ли это процесс за счет устранения ненужных обратных записейдиск или Mysql 5 достаточно умен, чтобы признать, что ничего не меняется и нет необходимости записывать обратно на диск?