[英]Best order of joins and append for performance
我在啟動和運行SAS DI作業時遇到巨大的性能問題。 因此,我正在尋找優化工作的聰明方法。
我特別想到的一件事是,我也許應該置換一些連接和附加的順序。 當前,我的工作配置如下:
有幾個結構相似的源表,我首先將日期過濾器應用於(以減少行數)並在兩個字段(例如a
和b
)上進行排序,然后將每個表與具有相同字段的Account表的表連接起來a
和b
(如果可能,我想為它們創建索引,但是不知道如何為SAS DI中的臨時工作表創建索引)。 這些連接中的每一個完成后,我將結果表附加到一個數據集中。
在我看來,我可以先追加, 然后只做一個聯接,但是我不知道哪種方法更快,或者如果答案是取決於我,我不知道它依賴什么(盡管我會猜測組成表的大小)。
那么,先執行多個聯接然后追加,還是先附加一個聯接再進行更好?
編輯
這是一些相關信息的更新(用戶Robert Penridge要求)。
非常感謝
SAS的性能主要是關於減少IO(即對磁盤的讀/寫)。
如果沒有其他詳細信息,很難提供幫助,但是您可以考慮以下一些其他事項:
proc append
將2個數據集附加在一起以減少IO。 將較小的數據集追加到較大的數據集。 調整左聯接和追加的順序可能不會像上述那樣產生太大的變化。
根據您的評論,似乎
1.有7個輸入源表
2.將這7個源表聯接到1個表
3.附加結果
在SAS DI studio中,使用Lookup可以更快地執行上述操作
1.將7個輸入表連接到查找轉換(將其稱為SRC 1-7)2.具有5000條記錄的表是在鍵A和B上執行查找的表(將其稱為LKUP-1)3。從LKUP-1中獲取相關列以傳播到TARGET表中。
這將更快,並且在這種情況下您不必執行JOIN,因為我懷疑您正在執行“多對多”聯接,這會降低SAS DIS的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.