用于BETWEEN的日期列上的非聚集索引

时间:2016-10-26 16:05:47

标签: sql sql-server tsql

我有一个用于财政期间的表格,其中包含期间结束和开始的开始和结束日期。我使用此表来确定服务的交易何时发生,并且收入已在查询中收集,例如......

SELECT p.PeriodID, p.FiscalYear, SUM(t.Amount) AS Revenue
FROM Transactions t
JOIN Period p ON t.TransactionDate BETWEEN p.PeriodStart AND p.PeriodEnd

我的问题是,在Period表上为日期列创建非聚集索引是否有益?如果是,则索引应包含PeriodStartPeriodEnd还是PeriodStart列。

提前致谢!

1 个答案:

答案 0 :(得分:4)

我建议你在两个列上创建索引

CREATE NONCLUSTERED INDEX IX_Period
  ON Period (PeriodStart, PeriodEnd)
  include (PeriodID, FiscalYear); 

Include列将帮助您避免从堆中查找

仅在PeriodStart上创建索引将无用