Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Daten des letzten Monats in SQL Server effizient abrufen?
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
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)
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 < @startOfCurrentMonthIndem 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!