Mysql UPDATE statement - накладные расходы для одних и тех же значений?
У меня есть большая база данных MYSQL с сотнями тысяч записей. Я хочу обновить поле в большом количестве из них, но я не знаю, обновлено ли это поле или нет.
если я вызываю оператор update, который устанавливает authortype = 10, а authortype уже 10, это будет быстрее, чем отдельный запрос, чтобы выбрать только те, которые не являются authortype = 10, а затем обновлять их?
Другими словами, если я устанавливаю значение, равное тому, что он уже есть, это что-то быстрее, чем если я обновляю значение к чему-то новому? опять же это тонны и тонны записей, и я хочу быть эффективными.
заблаговременно
Ответы
Ответ 1
Почему бы просто не использовать
UPDATE dbo.Authors
SET AuthorType = 10
WHERE AuthorType <> 10
и иметь лучшее из обоих миров.
Обратите внимание, что несколько сотен тысяч записей не должны создавать проблем для любого современного механизма базы данных.
Незначительное редактирование
Ответ 2
Нет, MySQL умный и не будет медленнее. Не переживайте за это, MySQL сделает это за вас.
Если вы установите столбец для значения, которое оно имеет в настоящее время, MySQL замечает это и не обновляет его. Выполнение записи не выполняется. (Источник)
НО
MySQL может использовать предложение WHERE в столбце-обновлении, чтобы определить, какой индекс использовать (и, следовательно, какие строки проверять), и в этом случае он может ускорить вашу операцию UPDATE. Если ваш столбец проиндексирован, включите его.
Ответ 3
Если ваша таблица содержит сотни тысяч строк, не стоит беспокоиться о том, сколько времени это займет. Время, затраченное на решение, будет намного больше времени, чтобы просто сделать это.
Если у вас сотни миллионов строк, это может быть другая история.