2012-04-17 101 views
1

我們即將開始一個新的過程。它將涉及超過50個表格,總數超過200萬行。 該進程將在for/For each框中循環。在內部,桌子將遭受不同的過程。 Basicaly更新(最多的將會是一個刪除查找重複項)。最後,我們將獲得一張新表格,其中包含所有這50個表格的全部內容,並完成所有更新。SQL for Loop Tunning

所以我的問題是:在速度方面,在每個循環中查找表中的重複項是否更好。還是在檢查完整結果的過程結束時進行全面刪除更好? 工作量或多或少會相同。

非常感謝。

編輯。

更多的信息。

該循環是需要的。這50個表位於兩個不同的服務器中。 Oracle和Access。循環是將它們填充到本地SQL服務器中。 在每個人口(循環)我做一些更新和工作表,以便他們準備好了。

現在的問題是,如果我們在表上執行的工作在進入循環或在其外部時更快。

謝謝,希望它變得更清晰。

+0

最好是在沒有循環的情況下進行組合。 – HLGEM 2012-04-17 14:00:43

+0

@HLGEM - 總是?我*發現它*有時*是一個好主意,可以將大寫寫入更小的寫入以節省事務日誌開銷等。 – MatBailie 2012-04-17 14:03:38

+0

@Dems並非總是,而是幾乎總是當您每次循環一條記錄時。如果你正在循環往往是一個好主意。 – HLGEM 2012-04-17 15:59:58

回答

1

聽起來像一個單一的聲明

此外,爲什麼denormalizing過早?

+0

我嘗試了一個完整過程完成後的小副本。只使用2個表格。循環內的第一個刪除。花了3.5秒。循環後的第2秒,耗時4.2秒。我不知道這是隨機的時間,因爲我選擇了隨機表,或者如果這是某種跡象。在涉及50張桌子之後,可能需要幾分鐘時間,所以我想馬上開始做非規範化工作,如果可能的話 – 2012-04-17 13:53:57

+0

我覺得你不應該寫一個循環......應該全部由sql語句。也許編輯問題以顯示一些示例表格,數據和期望的結果 - 然後您可以獲得一個很好的sql語句進行比較。 – Randy 2012-04-17 13:56:16