在GridView RowDataBound或直接在SQL中操作结果?

问题描述 投票:0回答:3

我对效率有一个奇怪的问题。假设我在数据库上有一个字段,它只是一个表示其他内容的数字。比如,值为1表示该术语为30天。

编写像这样的SELECT语句会更好(更有效)吗?

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

...并将结果直接绑定到GridView,或者更好地评估GridView的RowDataBound事件中的TermId字段并相应地更改单元格文本?

不要担心可扩展性或类似的东西,我只关心整体效率的差异。对于它的价值,数据库驻留在Web服务器上。

asp.net sql optimization
3个回答
1
投票

效率可能无关紧要 - 但代码可维护性确实如此。问问自己 - 这些价值会改变吗?怎么样呢?如果这些值发生变化,使用2年后我需要做什么?如果很明显在SQL中编写脚本意味着更好的可维护性(更容易更改),那么在存储过程中执行它。如果以后更容易在代码中更改它们,那么就这样做。这两种方法的好处都非常低,因为代码看起来并不复杂。


0
投票

出于多种原因,我将在网格视图中处理翻译。

原因#1:共享SQL资源。网格是分布式的。更好的可扩展性。

原因#2:传输几个整数与字符串的带宽较低。

原因#3:代码可以针对其他语言进行本地化,而不会影响SQL Server代码。


0
投票

名为TermID的数据库表中的字段意味着自己表示另一个表的外键(可能称为“Term”)。

如果是这种情况,则可能该表具有(或应该具有)可以保存“30天”文本的描述字段。您可以/应该加入此表以检索描述性文本。

虽然这种连接可能无法提高效率,但它的重量足够轻,不会妨碍它。

© www.soinside.com 2019 - 2024. All rights reserved.