我知道一般來說,將盡可能多的處理從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