当总和和组数据大约100,000条记录时太慢

时间:2014-07-08 04:02:26

标签: sql sql-server-2008-r2

目前,我正在使用SQL Server 2008 R2。我的表有大约100,000条记录,其中包括以下列:ColA,ColB,Weight,Volume,Quantity。

这是我的查询字符串:

select ColA, ColB, sum(([Weight]/Volume)*Quantity) as 'Result'
from dbo.TblSample
group by ColA, ColB

花了这么长时间才完成(超过10分钟)。

有人可以帮我改进此查询吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

SELECT SUM(result),ColA, ColB FROM 
(
select ColA, ColB, ([Weight]/Volume)*Quantity as 'Result'
from dbo.TblSample
) tmp

group by ColA, ColB

或使用公用表表达式

WITH CTE 
AS
-- Define the CTE query.
(
   select ColA, ColB, ([Weight]/Volume)*Quantity as 'Result' 
from dbo.TblSample
)

SELECT SUM(result),ColA, ColB FROM CTE group by ColA, ColB

答案 1 :(得分:1)

根据提供的信息,我建议您在列ColAColB上创建索引。我们的想法是,当用于分组或过滤的列被编入索引时,您可以获得性能提升。

有关详细示例,您可以查看this article