我知道一般来说,将尽可能多的处理从Sql Server移动到应用程序(在我的情况下为ASP.NET)是一种很好的做法。但是,如果应用程序级别的处理意味着将30多个额外参数传递给Sql Server,会怎么样?在这种情况下,将处理移到Sql Server是否值得?Sql处理与ASP.NET运行时处理
下面是我面对的具体困境 - 哪个程序将提供更好的整体表现?
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。因此,无论何时我的Web应用程序的用户给出itemN的新评级,那么totalNumberOfRatingsItemN都会增加1.在大多数情况下,评分将被赋予多个项目(但不一定全部),所以totalNumberOfRatings对于不同项目而言并不相同。
你正在增加的这30多个值是什么?这可能表明您的数据库模式需要改进。 – 2009-06-23 02:17:05