Ich mache eine Abfrage wie folgt:
%Vor%und funktioniert nicht
Ich versuche, die Daten zu erhalten, die nicht älter als drei Tage sind.
SQL-Server.
Wie geht das?
DATEDIFF arbeitet zu langsam ..
DateDiff
ist extrem schnell ... Ihr Problem besteht darin, dass Sie es für den Spaltenwert der Datenbanktabelle ausführen, daher muss der Abfrageprozessor die Funktion für jede Zeile in der Tabelle ausführen, selbst wenn für diese Spalte ein Index vorhanden war . Dies bedeutet, dass die gesamte Tabelle von der Festplatte geladen werden muss.
Verwenden Sie stattdessen die Funktion dateAdd
für das heutige Datum, und vergleichen Sie die Datenbanktabellenspalte mit dem Ergebnis dieser einzelnen Berechnung. Jetzt wird nur DateAdd()
einmal ausgeführt und es kann ein Index verwendet werden (falls vorhanden), um nur die Zeilen zu laden, die dem Prädikatkriterium entsprechen.
Where a.DateValue > DateAdd(day,-3,getdate())
Dadurch wird Ihr Abfrageprädikat SARG-fähig
Die Microsoft-Dokumentation unter Ссылка schlägt vor, dass anstelle von DateTimeNow
solltest du getdate()
haben. Funktioniert es besser so?
Tags und Links sql sql-server datetime projection