2017-06-27 137 views
0

我有一個很大的XML文件,大約800 MB,帶有許多標籤和屬性。我需要從這個文件中提取不同的值,因此我使用了許多SORTJOIN轉換。所有這些工作都很好,不需要太多時間,除了下面圖片中顯示爲紅色橢圓形的最後一個SORT轉換。這需要永遠。SORT轉換需要永久

enter image description here

如果我使用一個較小的XML文件,它會走通,並不會花費太多時間。所以我認爲問題與它處理的數據集的大小有關。我想知道你是否知道可以幫助我處理這種情況的任何方式。任何需要更改的屬性以改進此特定情況的性能。我正在使用Visual Studio 2015.謝謝!

+0

您是否考慮編寫SQL查詢並使用Exec SQL步驟更新狀態值,而不是執行查找和合並?此外,所有的來源XML?如果是這樣,你可能想要在某個時候轉換成真正的表格。這將會提高性能。 –

+0

@JacobH請糾正我,如果我沒有得到你的建議,但我不是「更新」,我沒有「查找」。我只是查詢一個狀態表的小型表,根據狀態ID加入狀態名稱。我看不到我如何在這裏使用Exec SQL任務。 – TheEsnSiavashi

+0

如果你不查找數據,爲什麼你有一個叫做「LKP」的步驟? :)我的問題代表。除了您從各種數據源進行大量合併和排序之外,您還沒有給我們提供任何信息,其中一個比其他數據源慢。 –

回答

1

爲了加快SSIS中的Sort轉換速度,你真的做不了多少事情。最好的解決方案是找到一種不必使用Sort轉換的方法。這通常意味着將數據放入索引數據庫表中,並在SELECT ... ORDER BY查詢中進行排序。

+0

謝謝。不幸的是,避免使用'SORT'似乎不是我的選擇,因爲我需要使用MERGE JOIN從OLE DB源和Merge中獲取一些狀態名稱。我也沒有權限爲此創建一個ETL表,並要求這將是我的最後一個選項。 – TheEsnSiavashi

+0

如果要合併狀態名稱,並且只有大約50個可能的名稱正在合併,則可能會從查找轉換(而非合併連接)獲得更好的性能。特別是如果狀態名稱不會更改並因此可以被緩存。在查找之前,您不必對傳入的行進行排序。 –

+0

我也想過這個,但是,MERGE JOIN'做了一個'left join'。 '看起來'只給我匹配和不匹配。無論如何,我不知道「LOOK UP」可以作爲左連接工作。 – TheEsnSiavashi