2016-10-26 3 views
3

期間が終了して開始される開始日と終了日を持つ会計期間に使用されるテーブルがあります。私は、期間テーブルの上の非クラスタ化インデックスを作成することが有益であろう、BETWEENに使用される日付列のノンクラスタード・インデックス

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 

私の質問は...取引がサービスのために発生していると、収益はのようなクエリで収集されたときを決定するために、このテーブルを使用します日付の列?その場合は、インデックスにPeriodStartPeriodEndの両方か、またはPeriodStartの列だけが含まれている必要があります。

ありがとうございます!

+0

有用ではないだろう

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

Include列のみPeriodStartにインデックスを作成するヒープ

から検索を避けるために、あなたを助ける、列の両方にインデックスを作成することを提案しますここには正解か間違った答えがありません。それは、期間表の行数によって異なりますか?人口のどれくらいが返されますか?このクエリは現在遅いですか? –

+0

現在、2008年から毎年12行が表示されます。だから、ほんのわずかしか使用されていませんが、私は現在2030年にテーブルを構築しています –

+0

インデックスの開始と終了は実際のテーブルを叩く必要がなくなり、パフォーマンスが向上するはずですが、想像がつきませんby much –

答えて

4

私は

関連する問題