В целом, я знаю, что рекомендуется переносить как можно больше обработки с Sql Server на приложение (в моем случае ASP.NET). Однако что если обработка на уровне приложения означает передачу более 30 дополнительных параметров на сервер Sql. В этом случае стоит перенести обработку на Sql Server?
Вот конкретная дилемма, с которой я сталкиваюсь - какая процедура в целом даст лучшую производительность?
CREATE PROCEDURE MyProc1
@id int
AS BEGIN
UPDATE MyTable
SET somevalue1 = somevalue1 + 1,
somevalue2 = somevalue2 + 1,
somevalue3 = somevalue3 + 1,
...
somevalueN = somevalueN + 1
WHERE id = @id
END
Или
CREATE PROCEDURE MyProc2
@id int,
@somevalue1 int,
@somevalue2 int,
@somevalue3 int,
...
@somevalueN int
AS BEGIN
UPDATE MyTable
SET somevalue1 = @somevalue1,
somevalue2 = @somevalue2,
somevalue3 = @somevalue3,
...
somevalueN = @somevalueN
WHERE id = @id
END
Я использую управляемый хостинг, но, полагаю, допустимо предположить, что Sql Server и среда выполнения ASP.NET находятся на одном компьютере, поэтому передача данных между ними, вероятно, будет довольно быстрой / незначительной (или это).
30 параметров в основном являются totalNumberOfRatings для различных элементов. Поэтому, когда пользователь моего веб-приложения присваивает новый рейтинг для itemN, то totalNumberOfRatingsItemN увеличивается на 1. В большинстве случаев оценка будет присваиваться нескольким элементам (но не обязательно всем), поэтому totalNumberOfRatings не одинаков для разных элементов. 1012 *