我们有一个包含产品属性的 1700 万行的表,假设它们是:
品牌 ID、尺寸 ID、颜色 ID、价格、形状 ID
我们需要按品牌和尺寸查询聚合。目前我们通过执行以下操作来查询和过滤这些数据:
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
我们报告这些数据。问题是,运行此查询需要 10 秒左右(这是一个非常简单的示例),尽管返回的实际数据只有几百行。
我认为我们已经达到了索引该表的能力,因此我认为任何数量的索引都不会让我们获得近乎即时的结果。
我对 OLAP 或其他分析服务知之甚少,但是 SQL Server 有什么可以预过滤或预聚合此表以便可以执行上述查询(或类似返回等效数据)?或者在一个非常大的表上处理任意 where 子句的最佳方法是什么?