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

时间:2008-09-29 16:14:17

标签: asp.net sql optimization

我对效率有一个好奇的问题。假设我在数据库上有一个字段,它只是一个表示其他内容的数字。比如,值为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服务器上。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

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

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