這是關於MS SQL Server 2005的我應該打破大型SQL查詢(MS)
我有一個SSIS包驗證兩個不同的數據源之間的數據。如果發現不同,它會構建並執行SQL更新腳本來解決問題。找到所有差異後,SQL Update腳本將在軟件包的末尾運行。
我想知道是否有必要或一個好主意,如何將SQL更新腳本分解成多個事務,最好的辦法是做到這一點。
更新腳本類似於此,但更長(例如):
Update MyPartTable SET MyPartGroup = (Select PartGroupID From MyPartGroupTable
Where PartGroup = "Widgets"), PartAttr1 = 'ABC', PartAttr2 = 'DEF', PartAttr3 = '123'
WHERE PartNumber = 'ABC123';
對於每一個錯誤/差分發現一個額外的更新查詢添加到更新腳本。我只預計每天會有300次更新,但有時可能會有5萬次。我是否應該將腳本分解爲每500個更新查詢等事務?
這將在沒有人使用該系統時運行,但感謝您的解釋。對於未來的知識,當你說大塊的話是否你說有多個交易? 類似於: BEGIN TRANSACTION; //寫下500件東西 COMMIT TRANSACTION; BEGIN TRANSACTION; //寫下500件東西 COMMIT TRANSACTION; BEGIN TRANSACTION; //寫下500件東西 COMMIT TRANSACTION; – MaxGeek
是的,我的意思是在多個事務中執行更新,如果你想避免表鎖。另一個考慮:如果更新索引列,則每個更新都會觸發對索引的更新。如果是這樣,在完成所有這些更新之後,您可能需要重新對該表進行索引並更新其中的統計信息。 –