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