2008-09-29 40 views
0

我對效率有一個好奇的問題。假設我在數據庫上有一個字段,它只是一個代表別的數字。比如,值爲1表示該術語爲30天。在GridView RowDataBound中操作結果還是直接在SQL中操作?

它會更好(更有效)的代碼這樣的SELECT語句...

SELECT 
    CASE TermId 
     WHEN 1 THEN '30 days' 
     WHEN 2 THEN '60 days' 
    END AS Term 
FROM MyTable 

...,結果直接綁定到GridView,或者它會更好地評估TermId GridView的RowDataBound事件中的字段並相應地更改單元格文本?

不要擔心可擴展性或類似的東西,我只關心整體效率的差異。數據庫駐留在Web服務器上是值得的。

回答

1

效率可能不會在這裏 - 代碼可維護性雖然。 問問自己 - 這些值會改變嗎?如果他們這樣做呢?如果這些值發生變化,那麼在使用兩年後我需要做什麼? 如果在SQL中編寫腳本會顯示更好的可維護性(易於更改),那麼在存儲過程中執行它。如果以後更容易在代碼中更改它們,那就這樣做。 兩者的好處都很低,因爲代碼看起來並不複雜。

0

由於多種原因,我會在網格視圖中處理翻譯。

原因#1:共享SQL資源。網格分佈。更好的可擴展性。

原因#2:較低的帶寬傳輸一對夫婦整數與字符串。

原因#3:可以爲其他語言本地化代碼而不影響SQL Server代碼。

+0

我不明白原因#2。不管所選擇的方法如何,用戶將看到相同的東西,帶寬是否會相同? – 2008-09-29 16:55:20

+0

#2我的不好。我沒有注意到環境是ASP.NET。我正在考慮一個WinForms網格。 – hurcane 2008-10-08 16:50:47

0

數據庫表中名爲TermID的字段將暗示自己代表另一個表(可能稱爲「Term」)的外鍵。

如果是這種情況,那麼也許該表具有(或應該具有)可以容納「30天」文本的描述字段。您可以/應該加入此表以檢索描述性文字。

儘管這種連接可能不會提高效率,但它足夠輕便,不會阻礙。