innerhalb einer gespeicherten Prozedur, muss ich mit 7-Tage-Datum Abständen zwischen einigen @StartDate und @EndDate meine temporäre Tabelle füllen, etwa so:SQL - Bestücken temporäre Tabelle mit Datumsintervalle mit minimalen Auswirkungen auf die Leistung
CREATE TABLE #DateIntervals (
PeriodStartDate date,
PeriodEndDate date
)
DECLARE @StartDate datetime = '1/1/2017';
DECLARE @EndDate datetime = '1/1/2018';
WHILE @StartDate <= @EndDate
BEGIN
INSERT INTO #DateIntervals (PeriodStartDate, PeriodEndDate)
SELECT @StartDate, DATEADD(day, 6, @StartDate)
SET @StartDate = DATEADD(day, 7, @StartDate)
END
Es funktioniert gut, aber es dauert 1483 Millisekunden auszuführen. Wenn ich dann dieser Tabelle mit mehr Daten beitrete, wird es noch mehr Zeit zur Ausführung benötigen. Ich muss diese Zeit irgendwie reduzieren, um die Gesamtleistung des SP zu verbessern.
Irgendwelche Ideen, wie man das macht?
Können Sie eine "Datums" -Tabelle erstellen und diese mit allen 7-Tage-Spannen für Jahre und Jahre füllen? Dann '' einfach '' '' bei Bedarf an den Tisch? Das Indizieren würde auch Ihrer Leistung helfen. – Forty3
Es gibt bessere Möglichkeiten, aber das ist unglaublich langsam, 53 Zeilen einzufügen. Für mich dauert es 13ms https://i.stack.imgur.com/BCLd8.png –
Möglicherweise war etwas falsch mit meinem SQL Server. Ich habe die App neu geladen, es begann viel schneller zu arbeiten. –