sql - 使用不同计数时如何提高性能

标签 sql performance sql-server-2008

我的数据库是 SQL SERVER 2008

我有一个包含 1 亿行和 50 列的大表。

所有数据类型均为int。

然后,我的查询就像......

Select Count(distinct col5) , Count(distinct col8) , Sum(Col 30) , Sum(Col 49) 
Group by Col1 

Select Count(distinct col5) , Count(distinct col8) , Sum(Col 30) , Sum(Col 49) 
Group by Col1,col2

.....


Select Count(distinct col5) , Count(distinct col8) , Sum(Col 30) , Sum(Col 49) 
Group by Col1 ,Col2,Col3,Col4,Col6,Col7

(about 180 queries ...like above)

但是当我使用不同计数时,性能非常糟糕。

那么,谁能教我如何改进它?

就我而言,最佳解决方案可能需要多长时间?

非常感谢您的建议......

最佳答案

这些查询(没有 WHERE 子句)很难优化,因为无论如何它们都需要访问每条记录来计算总和。

全表扫描和临时表来保存结果是最好的解决方案,这也是您的计划中最有可能采用的解决方案。

关于sql - 使用不同计数时如何提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6679621/

相关文章:

python - 将正弦应用于矩阵的快速方法

java - 创建新变量与重用旧变量哪个更快?

同一对象上 x 调用的 c++ 虚拟函数性能

sql - 如何删除完全重复的行

php - 如果现有 mysql 数据重复或更多,如何编辑 "unique"

php - 可捕获的 fatal error : Object of class stdClass could not be converted to string

sql - 将输出 Insert._ID 的值存储到局部变量以在另一个查询中重用它

sql-server-2005 - Sql Server 2005 中的时间数据类型

c# - 调用标量值函数时,ExecuteScalar 始终返回 null

php - 使用 '@' 登录输入不会改变表