【发布时间】:2009-10-02 20:08:24
【问题描述】:
我们有一个包含 1700 万行的表,其中包含产品属性,假设它们是:
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
我们会报告这些数据。问题是,运行这个查询需要 10 秒左右(这是一个非常简单的例子),尽管返回的实际数据只有几百行。
我认为我们已经达到了索引该表的能力,所以我认为任何数量的索引都不会让我们获得近乎即时的结果。
我对 OLAP 或其他分析服务知之甚少,但 SQL Server 有什么可以预过滤或预聚合此表以便执行上述查询(或类似返回等效数据)? 或者在一个非常大的表上处理任意 where 子句的最佳方法是什么?
【问题讨论】:
-
您能否告诉我们数据的频率和新鲜度,即“有人每 15 分钟运行一次,数据需要保持最新”或“很多人整天都在运行,但我们'很高兴看到昨天的数据'(多维数据集或索引视图的主要候选者)
标签: sql sql-server tsql olap