Ich habe eine gespeicherte Prozedur zum Einfügen von Datensätzen.SQL-Leistungsdifferenz von Schleifen im Vergleich zum Aufrufen einer Funktion
Ich muss einen Datumswert für eine Spalte mit einer bestimmten Logik berechnen. Zur Zeit habe ich eine Schleife für die einzufügenden Daten erstellt und berechne das Datum.
Das Problem ist, ich muss vermeiden, die Schleife zu verwenden, um Daten einzufügen und müssen sie als Batch einfügen. Um das zu tun, muss ich die Datumsberechnungslogik auf eine Funktion verschieben.
Was ist der Unterschied in der Leistung Schleifen von Daten (derzeit haben) und die Verwendung einer Funktion.
Hier ist meine gespeicherten Prozedur:
WHILE @C <= @WeeklyDataCount
BEGIN
DECLARE @PopulateDate DATE;
SELECT
@Value = D.Value,
@FromDate = D.FromDate
FROM
#WeeklyData D
WHERE
D.AutoId = @C;
-- Sample Date calculation logic that needs to move to a function
@DayCount = SELECT COUNT(*)
FROM DayTable
@Counter2 = 1;
WHILE @Counter2 < @DayCount
BEGIN
SET @PopulateDate = DATEADD(DAY, (-1 * @Counter2), @FromDate);
SET @Counter2 = @Counter2 + 1;
END
-- End of Day Calculation Logic
INSERT INTO TABLE1 (Value, PopulateDay)
VALUES(@Value, @PopulateDate)
SET @C= @C +1;
END
Im Allgemeinen sollten Schleifen mit SQL vermieden werden. Es ist schwierig, eine genaue Antwort ohne Probendaten (vorzugsweise DDL + DML) und gewünschten Ergebnissen zu geben. –
'(Einige Logik)' könnten Sie uns sagen, was es ist? Vielleicht ist es möglich, Ihre ganze Schleife durch eine "einprägsame" Aussage zu ersetzen. – Rokuto
@Rokuto - Ich habe die Antwort aktualisiert – tarzanbappa