Подтвердить что ты не робот

Mysql UPDATE statement - накладные расходы для одних и тех же значений?

У меня есть большая база данных MYSQL с сотнями тысяч записей. Я хочу обновить поле в большом количестве из них, но я не знаю, обновлено ли это поле или нет.

если я вызываю оператор update, который устанавливает authortype = 10, а authortype уже 10, это будет быстрее, чем отдельный запрос, чтобы выбрать только те, которые не являются authortype = 10, а затем обновлять их?

Другими словами, если я устанавливаю значение, равное тому, что он уже есть, это что-то быстрее, чем если я обновляю значение к чему-то новому? опять же это тонны и тонны записей, и я хочу быть эффективными.

заблаговременно

4b9b3361

Ответ 1

Почему бы просто не использовать

UPDATE  dbo.Authors
SET     AuthorType = 10
WHERE   AuthorType <> 10

и иметь лучшее из обоих миров.

Обратите внимание, что несколько сотен тысяч записей не должны создавать проблем для любого современного механизма базы данных.

Незначительное редактирование

Ответ 2

Нет, MySQL умный и не будет медленнее. Не переживайте за это, MySQL сделает это за вас.

Если вы установите столбец для значения, которое оно имеет в настоящее время, MySQL замечает это и не обновляет его. Выполнение записи не выполняется. (Источник)

НО

MySQL может использовать предложение WHERE в столбце-обновлении, чтобы определить, какой индекс использовать (и, следовательно, какие строки проверять), и в этом случае он может ускорить вашу операцию UPDATE. Если ваш столбец проиндексирован, включите его.

Ответ 3

Если ваша таблица содержит сотни тысяч строк, не стоит беспокоиться о том, сколько времени это займет. Время, затраченное на решение, будет намного больше времени, чтобы просто сделать это.

Если у вас сотни миллионов строк, это может быть другая история.