【发布时间】:2010-10-13 14:57:52
【问题描述】:
我正在为一个应用程序创建一些报告,供各个州使用。数据库有可能非常大。我想知道哪种方式是获取列总计的最佳方式。
目前我的 SQL 类似于以下内容:
SELECT count(case when prg.prefix_id = 1 then iss.id end) +
count(case when prg.prefix_id = 2 then iss.id end) as total,
count(case when prg.prefix_id = 1 then iss.id end) as c1,
count(case when prg.prefix_id = 2 then iss.id end) as c2
FROM dbo.TableName
WHERE ...
如您所见,列在其中两次。在一种情况下,我将它们相加并显示总数,在另一种情况下,我只显示报告所需的各个值。
这是一个非常小的 SQL 示例,有 20 多列,并且有时会将其中 4 列或更多列相加。
我正在考虑声明一些@Parameters 并将每个列设置为等于一个@Parameter,然后我可以添加我需要显示列总数的@Parameters,即:SET @Total = @c1 + @c2
但是,SQL Server 引擎是否会像这样多次关心列在其中?有更好的方法吗?
【问题讨论】:
标签: sql sql-server-2005 sql-server-2008 query-optimization sql-optimization