0
我有一個存儲過程來插入記錄。循環的SQL性能差異vs調用函數
我必須計算具有特定邏輯的列的日期值。目前,我已經爲插入的數據創建了一個循環,並進行計算來填充日期。
問題是我需要避免使用循環插入數據並需要將它們作爲批處理插入。爲了做到這一點,我必須將日期計算邏輯移到一個函數中。
循環數據(當前有)和使用函數在性能方面有什麼不同。
這裏是我的存儲過程:
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
一般來說,應該避免循環使用SQL。如果沒有樣本數據(最好是DDL + DML)和期望的結果,很難給出確切的答案。 –
'(某些邏輯)'你能告訴我們它是什麼嗎?也許有可能用一些「朗朗上口」的陳述取代你的整個循環。 – Rokuto
@Rokuto - 我已經更新了答案 – tarzanbappa