Учитывая таблицу базы данных с (псевдо) структурой, подобной этой:
Transaction
Id (int, PK)
Status (int)
Amount (decimal)
Currency (varchar)
Reference (varchar)
Предполагая, что атрибут UpdateCheck
установлен на Always
для всех полей в таблице.
Если я извлекаю запись Transaction
из базы данных, обновляю ее Status
до X (например), а затем SubmitChanges
, LINQ до SQL генерирует оператор обновления что-то вроде этих строк ( Я удалил некоторые параметры для ясности)
UPDATE Transaction SET Status = X WHERE (Id = Y) AND (Status = Z) AND (Amount = A) AND (Currency = B) AND (Reference = C)
Основываясь на ответе Джеффа Этвудса на пост здесь , звучит так, что * 1016 оказывает существенное влияние на производительность *
Однако принятый ответ на вышеупомянутый пост противоречит следующему:
Ваше утверждение о том, что накладные расходы на проверку обновлений незначительны, является правильным. Если существует индекс (или первичный ключ), который удовлетворяет какой-либо части предложения where, то он будет использоваться. Затраты на проверку других столбцов ничтожно малы.
И все же это не вызывает сомнений в разделе комментариев под ним, что меня удивляет? Может кто-нибудь помочь уточнить?