我的数据库是 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/