2017-05-26 268 views
3

我有兩個表:SSIS 14 - 臨時區域 - 合併兩個源正在採取了很多時間

  • 表A:631個476行
  • 表B:12個90行

Eache Table具有我想將其用作鍵入合併對象的字段ID。在下圖中可以看到進程在合併對象之前被阻塞。我已經使用Merge Join對象進行了測試,結果相同... enter image description here

爲了使用SSIS 14進行此操作,還有哪些其他可能性?

謝謝!

+0

好的,排序600K行將比排序13K行花費更多的時間。在合併甚至開始之前,這兩種排序都需要完成。考慮在源代碼中進行排序,因此您不需要在SSIS中進行排序步驟(這可能需要調整元數據,以便SSIS不會丟失源已經排序的信息);數據庫服務器在這方面更有效率。事實上,您的流程看起來非常簡單,以至於實際合併的所有內容都可以使用SQL完成。 –

回答

2

如果兩個源表都在同一個服務器中,請不要使用這種方式。你應該簡單地在SQL Server端寫一個查詢。

事情是這樣的:

SELECT * 
FROM [Table A] 
INNER JOIN [Table B] ON [Table A].ID = [Table B].ID 
ORDER BY ... 

由於詹姆斯·塞拉說:When to use T-SQL or SSIS for ETL

  1. 性能 - 採用T-SQL,一切都在SQL引擎內處理。使用SSIS,您可以將所有數據帶到SSIS內存空間並在那裏進行操作。所以,如果速度是一個問題,通常T-SQL是一條路,特別是在處理大量記錄時。 T-SQL中的JOIN語句就像在SSIS中使用查找任務一樣快。另一個例子是T-SQL中的MERGE語句比SSIS中用於大型任務的SCD任務性能好得多
  2. 功能/功能 - 某些功能只能在T-SQL或SSIS中完成。您可以在SSIS中碎化文本,但不能在T-SQL中。例如,每行中字段數量不一致的文本文件只能在SSIS中完成。因此某些任務可能會迫使您使用其中一個或另一個
  3. 當前技能集 - IT部門的人員是否更熟悉SSIS或T-SQL?
  4. 易於開發/維護 - 當然,任何一個你最熟悉的將是最容易的,但如果你的技能都是相當均勻,然後SSIS通常更容易使用,因爲它是圖形化的,但有時你可以在T-SQL中快速開發。例如,不得不加入一堆表格需要SSIS中的一堆任務,在T-SQL中這是一個聲明。所以它可能是更容易地創建捧場SSIS表的任務,但它會需要更長的時間來構建,然後寫一個T-SQL語句
  5. 複雜性 - SSIS可以更復雜,因爲你可能需要創建很多任務要完成你的目標,在T-SQL它可能只是一個說法,就像上面的例子中用於連接表
  6. 可擴展性 - SSIS具有更好的可擴展性,因爲你可以創建一個使用C#腳本任務,可以做任何事情,特別是用於非數據庫相關任務。 T-SQL是有限的,因爲它僅用於數據庫任務。SSIS也有日誌記錄,其中T-SQL不會
  7. 可能的解釋/破壞更改 - 次要問題,但T-SQL始終刪除每個版本中必須重寫的功能
  8. 源和類型/體系結構目的地 - 如果您有多種類型的來源,SSIS會更好。例如,它適用於Oracle,XML,平面文件等.SSIS的設計從一開始就與其他源一起使用,其中T-SQL是爲SQL Server設計的,它需要更多步驟才能訪問其他源,這樣做有其他限制
  9. 當地法規 - 是否有一些公司標準必須遵守,以限制您可以使用哪種工具?
2

我在加入或合併SSIS時遇到了問題。我將寫入TSQL版本並執行SQL任務。它總是以這種方式跑得快得多。