在GridView RowDataBound中操纵结果还是直接在SQL中操纵结果?
时间:2020-03-06 14:52:58 来源:igfitidea点击:
我对效率有一个好奇的问题。假设我在数据库中有一个字段,该字段只是代表其他内容的数字。例如,值为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服务器上。
解决方案
由于多种原因,我将在网格视图中处理翻译。
原因1:共享SQL资源。网格是分布式的。更好的可扩展性。
原因2:传输两个整数与字符串相比,带宽较低。
原因#3:可以将代码本地化为其他语言,而不会影响SQL Server代码。
效率可能并不重要,但是代码的可维护性确实如此。
问自己这些价值观会改变吗?如果他们这样做怎么办?如果这些值更改了2年,我该怎么办?
如果很明显地发现,使用SQL编写脚本将意味着更好的可维护性(更易于更改),则可以在存储过程中进行操作。如果以后在代码中更改它们更容易,请执行此操作。
这样做的好处都非常低,因为代码看起来一点也不复杂。
数据库表中名为TermID的字段将暗示其自身表示另一个表的外键(可能称为" Term")。
如果是这种情况,则该表可能具有(或者应该具有)Description字段,该字段可以包含" 30天"文本。我们可以/应该加入此表以检索描述性文本。
尽管此连接可能无法提高效率,但它的重量很轻,不会妨碍操作。