Ich habe eine Abfrage, ich verwende eine innere Verknüpfung von 2 Tabellen, die etwa eine Million Zeilen haben. Ich versuche die Abfrage auszuführen, sodass nur Daten vom letzten Monat abgerufen werden. Es dauert jedoch sehr lange, wenn die Funktion getDate() verwendet wird. Aber wenn ich das Datum in diesem Format '2016-12-01' und '2017-01-01' gebe - ist es sehr schnell. Wie kann ich die Abfrage so ändern, dass sie schneller ausgeführt wird? Ich habe gelesen, dass ich vielleicht einen nicht geclusterten Index erstellen muss, aber ich bin noch nicht wirklich gut darin.So beschleunigen Sie SQL-Abfrage für Datum
select
custKey,
sum(salesAmt) as Sales,
sum(returnAmt) as Credit,
(sum(salesAmt) - sum(returnAmt)) as CONNET
from
[SpotFireStaging].[dbo].[tsoSalesAnalysis]
inner join
[SpotFireStaging].[dbo].OOGPLensDesc as o on tsoSalesAnalysis.ItemKey = O.ItemKey
where
PostDate between --DATEADD(MONTH, DATEDIFF(MONTH,0, GETDATE())-1,0)
--AND DATEADD(MS, -3,DATEADD(MM, DATEDIFF(M,-1, GETDATE()) -1, 0))
'2016-12-01' and '2017-01-01'
group by
custkey
Wie lautet der Datentyp von 'PostDate' ?, gibt es Indizes in der Tabelle? – Lamak
Ist es möglich, diese zwei Klammerdaten zu berechnen und sie vorher in zwei Variablen zu setzen? Was passiert wenn du es tust? Ich meine 'PostDate zwischen @firstDate UND @ secondDate'. – DVT
Hallo, Ja, ich habe es versucht und es hat perfekt funktioniert. Ich kann nicht glauben, dass ich nicht darüber nachgedacht habe. Danke für die Hilfe! :) – Cesar