Это интересный вопрос. В общем, я бы сказал, что лучше иметь where column = 0
. Это никогда не должно быть заметно хуже, но в MySQL это может не повлиять.
Без индекса в столбце, тогда запрос должен будет прочитать все строки в любом случае, чтобы идентифицировать те, которые необходимо обновить. Таким образом, запрос будет выполнять полное сканирование таблицы независимо. Даже с индексом оптимизатор может по-прежнему выбирать полное сканирование таблицы, если у вас нет кластерного индекса на column
.
Затем накладные расходы при выполнении обновления поддерживают журнал. Я уверен, что MySQL только регистрирует фактические изменения в базе данных. Другими словами, он все равно проводит сравнение. Таким образом, MySQL не собирается «повторно обновлять» значения до того же значения. Примечание. Не все базы данных ведут себя так.
Все, что сказал, я всегда ставил where column = 0
, если это ваше намерение. На 10 000 рядов производительность не является большой проблемой. По моему мнению, четкость кода выше. Кроме того, я пишу код для нескольких баз данных, поэтому предпочитаю писать код, который будет хорошо работать во всех них.
Совет: сделайте выбор как 'SELECT * FROM table WHERE column = 0' теперь добавьте' EXPLAIN', например 'EXPLAIN SELECT * FROM tbale WHERE column = 0', теперь вы можете видеть, насколько тяжел ваш sql, ведьма используются ключи и используются временные таблицы. если каждый из них выглядит нормально (у вас есть ключ, таблица temp не создается), то вы можете ОБНОВЛЯТЬ с WHERE, а также полное обновление таблицы. А записи в таблице 10000 'не очень тяжелые, на 500.000+ вам нужно позаботиться. – JustOnUnderMillions
с индексом в столбце, 10 000 строк будут почти мгновенными в любом случае. – WEBjuju
Вам не нужен индекс в этом столбце. И 10000 не так много. –