2013-10-18 123 views
1

我試圖找出最好的方法來做到這一點。SSIS - 刪除並插入所有行或更新並插入

查看實時數據,我想將行插入到DW表中。不知道什麼會更有效率。

  • 刪除目標表中的所有行並插入整個視圖。
  • 只更新或插入新行。

需要4分鐘來刪除行並插入整個視圖。嘗試查看更新並僅插入新內容會使其更快。

現在我在我的活DB中有350k行,它增加了2000 /周。視圖/表格有90列,我不確定如何在SSIS中執行此操作。

  • 我應該在視圖和目標表之間進行連接嗎?
  • 我應該使用查找並插入新行嗎? (是否在 更新需要?的情況下工作)

我看了看幾個例子上網,但不知道如果我需要做的所有列的連接,以檢查是否有更新的行。

回答

2

有幾件事要考慮 - 1.是否有任何需要維護的歷史?如果是,那麼你不能截斷並重新加載。

  1. 增長率:2000(行/周)* 52(周/年)= 104000(行/年) 所以,在3年內,它將雙(大約)。它並不意味着它會開始花費8分鐘。這可能需要說5-6分鐘。使用插入/更新技術,即使每次運行保存2分鐘,這一點至關重要?如果不是的話,那麼爲什麼這個過程帶來複雜性。

  2. 如果您需要兩種方法的定量比較,您需要編寫代碼並進行比較 - 我不知道任何捷徑。

  3. 如果您決定插入/更新,我建議您將所有90列的散列保留在新列中。在進行合併時,比較散列,如果不同,則更新全部90列。 90列是很多人單獨比較的方式。

如果需要進一步幫助使用散列比較進行插入/更新,請恢復。

+0

這就是我的想法。更好的是刪除並插入整個視圖。只是想確認這裏的一般想法。 – Mike

+0

如果我想每週追加整個表格,你推薦做什麼?所以每週都要將整個視圖插入同一張表。什麼是最好的方式來做到這一點? – Mike

+0

你的命題的用例是什麼?例如,如果沒有行更改,則最終會存儲重複的記錄。這是你真正想要的嗎?除非有很強的用例,否則我會遠離這種方法。如果你描述你的目的,我們可以提供一個解決方案,而不需要存儲重複。一個簡單和標準的方法是有這三個領域:1。 DateCreated 2. DateUpdated 3. IsCurrent(是的,這是多餘的,但有幫助) –