【发布时间】:2009-06-23 02:14:01
【问题描述】:
我知道一般来说,将尽可能多的处理从 Sql Server 转移到应用程序(在我的例子中是 ASP.NET)是一个好习惯。但是,如果应用程序级别的处理意味着将 30 多个额外参数传递给 Sql Server,该怎么办。在这种情况下,是否值得将处理移至 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 是不一样的。
【问题讨论】:
-
您要增加的这 30 多个值是什么?这可能表明您的数据库架构需要改进。
标签: asp.net sql sql-server-2008