2017-10-18 163 views
-1

(SSIS)我有一個有3200萬條記錄的目標表,我只是想和新來的3200萬條記錄進行比較,在那個新記錄中可能有(新記錄以及更新或修改的記錄以及舊記錄)。我想比較和插入新記錄,更新或修改記錄並省略舊記錄。 看到我用了lookup花了太多時間。所以請幫助我克服比較時間來解決我的性能問題。ssis比較兩個海量數據表

+0

這與SSIS無關。要麼執行連接,要麼*不帶* 32M記錄。在源數據庫上啓用更改跟蹤並*僅*引入更改的行。如果沒有更改跟蹤,無論如何,比較都需要很長時間 - 即使使用索引,您也可以*比較32M行和32M行。 –

+0

除此之外,你不提供任何信息,所以只能推測。源數據是否有「更改」列或不?您可以使用它來只讀取上次導入後更改的行。主鍵是否增量?您可以使用它僅加載上次導入後創建的*鍵*。您可以使用任一選項*避免*加載32M記錄。 –

+0

另一種選擇是批量執行更新。這樣可以避免洪泛tempdb並填寫事務日誌 –

回答

0

如果您每次需要查看所有3200萬條傳入記錄以查看其中是否有更改,那麼最具性能的解決方案是將所有現有記錄替換爲新記錄,而不管它們是否已更改。

將所有3200萬條記錄導入到臨時表中,然後執行切換或重命名以使臨時表成爲新的永久表。