【发布时间】:2009-07-21 15:36:08
【问题描述】:
我们有一个 Transactional Media 表,其中包含 4 列的聚集主键。 RevenueCentreID、DateOfSale、MediaItemID 和 SaleTypeID。它还包含数量列和金额列。
我们的大多数查询将针对特定媒体项目的日期范围选择收入中心。我们几乎从不使用 SaleTypeID。
在 RevenueCentreID、DateOfSale、MediaItemID 上创建索引还是在这三列上创建覆盖索引会更好吗?
RevenueCentreID 和 RevenueCentreID 分别是 RevenueCentres 表和 MediaItems 表的外键。在运行查询时,它们几乎总是会被加入。
典型的查询如下所示:
Select
RevenueCentreID,
MediaItemID,
DateOfSale,
SUM(Quantity)Quantity,
SUM(Amount)Amount
From
Media m
Inner Join RevenueCentres rc on m.RevenueCentreID = rc.RevenueCentreID
Inner Join MediaItems mi on m.MediaItemID = mi.MediaItemID
Inner Join MediaCategories mc on mi.MediaCategoryID = mc.MediaCategoryID
Where
rc.ProfitCentreID = 1
And mc.MediaCategoryID = 1
And (DateOfSale Between '20090713' and '20090719')
Group By
DateOfSale,
RevenueCentreID,
MediaItemID
任何建议将不胜感激......
【问题讨论】:
标签: indexing