Оптимизация MySql UPDATE?

Предположим, у меня есть таблица с двумя столбцами 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 достаточно умен, чтобы распознать что ничего не меняется и нет необходимости записывать обратно на диск?

5
задан Joe Stefanelli 13 January 2011 в 22:41
поделиться