2017-01-24 107 views
0

在SSIS中,我們已經合併連接,總是強制執行給用戶以獲得排序後的輸入。爲什麼合併加入需要在SSIS中排序輸入

但是,在SQL服務器中,我們已經合併,它不需要任何排序。

好心向我解釋爲什麼合併需要排序輸入。

感謝,

Praveenkumar.K

回答

1

合併的同時讀取和兩個排序輸入一行在一個時間比較加入的作品。在每一步中,我們會比較每個輸入的下一行。如果行相等,我們輸出一個連接行並繼續。如果行不相等,我們丟棄兩個輸入中較小的一個並繼續。由於輸入是排序的,我們知道我們丟棄的行少於任何一個輸入中的其餘行,因此永遠不能加入。

我們可以表達的僞代碼的算法:

get first row R1 from input 1 
get first row R2 from input 2 
while not at the end of either input 
    begin 
     if R1 joins with R2 
      begin 
       return (R1, R2) 
       get next row R2 from input 2 
      end 
     else if R1 < R2 
      get next row R1 from input 1 
     else 
      get next row R2 from input 2 
    end 

參考文獻: https://msdn.microsoft.com/en-us/library/ms191426(v=sql.100).aspx

+0

謝謝Thangadurai.B,好explanation.Very樂於助人。 –

+0

歡迎bro @PraveenKumar –

相關問題