Ваш метод в порядке.Я бы использовал <>
вместо !=
, потому что это традиционный оператор неравенства в SQL.Возможно, вы захотите проверить значения NULL
, но, похоже, это не проблема для этого вопроса.
Как правило, базы данных обновляют записи , а не столбцы .То есть вся запись считывается в память, значения изменяются, а затем вся запись записывается обратно в хранилище.Это упрощение - в кеше страниц есть блокировки, ведение журнала и грязные страницы, но оно отражает суть происходящего.
Затраты на update
обычно связаны с записью, блокировкой и ведением журнала.боковая сторона.Это не имеет ничего общего с тем, какие поля обновляются.
Есть исключения из этого.Например, если вы используете базу данных columnstore, то каждый столбец хранится отдельно.В этом случае предпочтительным будет отдельное обновление для каждого столбца.
Аналогичным образом, если некоторые значения особенно велики, они могут храниться «вне страницы».И это может повлиять на производительность обновления.
Но, в целом, ваш подход к обеспечению того, что столбец некоторый изменился, вполне подходит.