Какова стоимость производительности LINQ до SQL, когда UpdateCheck = Always? - PullRequest
0 голосов
/ 29 апреля 2020

Учитывая таблицу базы данных с (псевдо) структурой, подобной этой:

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, то он будет использоваться. Затраты на проверку других столбцов ничтожно малы.

И все же это не вызывает сомнений в разделе комментариев под ним, что меня удивляет? Может кто-нибудь помочь уточнить?

...