Heim > Datenbank > MySQL-Tutorial > Wie kann ich die Daten des letzten Monats in SQL Server effizient abrufen?

Wie kann ich die Daten des letzten Monats in SQL Server effizient abrufen?

Barbara Streisand
Freigeben: 2025-01-05 06:31:40
Original
213 Leute haben es durchsucht

How to Efficiently Retrieve Last Month's Data in SQL Server?

So rufen Sie die Datensätze des letzten Monats in SQL Server ab

Um Datensätze aus einem bestimmten Zeitraum abzurufen, ist es üblich, Bereichsabfragen zu verwenden mit inklusiver Unter- und Obergrenze. Dieser Ansatz birgt jedoch zwei Herausforderungen: Beeinträchtigung der Indexnutzung und potenzielle Auswahl unbeabsichtigter Daten.

1. Indexnutzung:

Das Anwenden von Funktionen auf eine durchsuchte Spalte, einschließlich impliziter Funktionen wie Umwandlung, kann den Optimierer dazu zwingen, Indizes für diese Spalte zu ignorieren, was zu einer linearen Suche durch jeden Datensatz führt. Berücksichtigen Sie Zeitstempel, die normalerweise als chronologische Zählung gespeichert werden. Das Extrahieren von Datumsteilen aus solchen Zeitstempeln erfordert komplexe Berechnungen und verlangsamt die Abfrage.

2. Unbeabsichtigte Daten:

Inklusive Obergrenzenbereiche wie <= können je nach SQL Server-Version und Spaltendatentypen zu einer falschen Datenauswahl führen. Daten von Mitternacht des nächsten Tages oder Datensätze von Teilen des aktuellen Tages können fälschlicherweise ein- oder ausgeschlossen werden.

Richtiger Ansatz:

Um diese Probleme zu beheben, verwenden Sie die Folgende Abfragestruktur:

WHERE date_created >= @startOfPreviousMonth AND date_created < @startOfCurrentMonth
Nach dem Login kopieren

Um den Beginn des vorherigen und des aktuellen Monats zu bestimmen, verwenden Sie Folgendes Berechnungen:

@startOfPreviousMonth = DATEADD(month, -1, @startOfCurrentMonth)
@startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)
Nach dem Login kopieren

Dieser Ansatz gewährleistet die Indexnutzung und eine genaue Datenauswahl. Das vollständige Skript wäre:

DECLARE @startOfCurrentMonth DATETIME
SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0)

SELECT *
FROM Member
WHERE date_created >= DATEADD(month, -1, @startOfCurrentMonth)
AND date_created < @startOfCurrentMonth

Indem der Optimierer Datumsoperationen nur einmal für einen einzelnen Wert ausführt, kann er Indizes nutzen und die Abfrage gibt korrekte Daten zurück.

Das obige ist der detaillierte Inhalt vonWie kann ich die Daten des letzten Monats in SQL Server effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage