SQL Server聚合非常大的表

Jod*_*tte 5 sql t-sql sql-server olap

我们有一个包含17Mil行的表,其中包含产品属性,让我们说它们是:

brandID,sizeID,colorID,price,shapeID

我们需要按品牌和大小查询聚合.目前我们通过执行以下操作来查询和过滤此数据:

select brandID, sizeID, count(*) 
from table where colorID in (1,2,3) and price=10 and shapeID=17
--"additional complex where clause here"
group by brandID, sizeID
order by brandID, sizeID
Run Code Online (Sandbox Code Playgroud)

我们报告这些数据.问题是,尽管返回的实际数据只有几百行,但运行此查询需要10秒左右(这是一个非常简单的示例).

我认为我们已经达到了索引此表的能力,因此我认为任何数量的索引都不会让我们接近即时结果.

我对OLAP或其他分析服务知之甚少,但SQL Server可以预先过滤或预先聚合此表,以便可以执行上述查询(或类似的返回等效数据)?或者在一个非常大的表上处理任意where子句的最佳方法是什么?

Ash*_*ine 0

如果没有关于表结构、物理环境和(非)聚集索引等的详细信息,我要寻找瓶颈的第一个地方是查询的“显示执行计划”,还有数据库引擎优化顾问和 SQL 分析器。希望这可以帮助。