我有一個存儲過程,我在其中處理(在數據庫上選擇)。衆多插入存儲過程
根據請求的結果,我在數據庫的一行中插入一些相應的數據。 我做這個過程數千次(有一段時間)。
SET @i = 0
WHILE (@i <= (SELECT MAX(Id) FROM @Metadata))
BEGIN
.....
INSERT INTO [MyTable] (Field1, Field2,Field3...) VALUES (VALUE1, VALUE3, VALUE3 ...)
SET @i = @i + 1
END
如果我看的表演,是它更好地做到這樣或存儲我在臨時表(在while循環)的結果,然後從這個臨時表中只能做一個插件?
有什麼更好的嗎?
我想補充一些資料,可能是我當時真不明白: - 在我的存儲過程的輸入我有一個估價表(其中有1000元和5000之間)。 - 對於這個表的每一行(while循環),我在我的數據庫上做了幾個SELECT(根據SELECT的結果,我給變量指定了某些值),這就是我插入到數據庫中的這些值插入我的表中的每一行後處理價值)。
剛出於好奇,數據從哪裏來? – Jeremy
如果您要堅持使用while循環(而不是集合),作爲快速優化,您可以構建一個插入批次行的命令。因此,您的命令將使用INSERT INTO ...進行初始化,並且您會在循環的每次迭代中附加一組VALUES。然後執行該命令。重複大塊直至完成。 – dave
感謝您的回答。我添加了一些信息,以便更清楚。我不堅持一段時間循環,但我不知道如何做不同。 – Fabaud