私は約3秒間実行される以下のクエリでパフォーマンスをインポータしようとしています。 SQLでの実行計画の分析と索引付けは初めてのことです。mssql日付フィールドのパフォーマンスの問題
私は既にDateFromとDateToのファイル(2つの別々のインデックスと1つの結合インデックス)でインデックスを作成しています。私はDateLiveActualファイルのインデックス作成を試みましたが、これらのインデックスのどれも実行計画に表示されていません。
クエリの最適化にご協力いただけますか?
declare @today date = convert(date,GETUTCDATE());
DBCC DROPCLEANBUFFERS
SELECT
S.LocationId
,SBP.CurrencyId
,SUM(CASE
WHEN S.ServiceStatusId = 1 THEN COALESCE (SBP.MRR, 0)
ELSE 0
END) AS ActiveMRR
,MIN(S.DateLiveActual) AS MinServiceDateLiveActual
FROM dbo.service_Service AS S
INNER JOIN dbo.billing_ServiceBillingPeriod AS SBP ON SBP.ServiceId = S.Id
WHERE
SBP.DateFrom <= @today AND (SBP.DateTo >= @today OR SBP.DateTo IS NULL)
GROUP BY S.LocationId, SBP.CurrencyId
インデックス作成でperfが1秒改善されました。ありがとうございます。しかし、Min(DateLiveScheduled)には1秒かかります。とにかくそれをスピードアップできるのですか?実際にはservice_Serviceテーブル上にあるので、SQLではデフォルトでPKのインデックスが使用されます。 – Raghav