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