Ich versuche, Leistung auf die unten Abfrage zu verbessern, die für etwa 3 Sekunden ausgeführt wird. Ich bin neu in der Ausführungsplananalyse und Indizierung in SQL.mssql Datum Feld Leistungsprobleme
Ich habe bereits Indizierung auf DateFrom und DateTo-Dateien (2 separate Index und ein kombinierter Index). Ich habe versucht, die Indexierung auf DateLiveActual zu erstellen, aber keiner dieser Indizes wird im Ausführungsplan angezeigt.
Können Sie mir bitte helfen, die Abfrage zu optimieren?
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
Die Indizierung verbessert die Perf um 1 Sek., Danke für die Eingabe .. Allerdings dauert die Min (DateLiveScheduled) 1 Sek. Können wir das trotzdem beschleunigen? Eigentlich ist es in der service_Service-Tabelle, also nimmt SQL standardmäßig PKs Index. – Raghav