0
在SSIS中,我們已經合併連接,總是強制執行給用戶以獲得排序後的輸入。爲什麼合併加入需要在SSIS中排序輸入
但是,在SQL服務器中,我們已經合併,它不需要任何排序。
好心向我解釋爲什麼合併需要排序輸入。
感謝,
Praveenkumar.K
在SSIS中,我們已經合併連接,總是強制執行給用戶以獲得排序後的輸入。爲什麼合併加入需要在SSIS中排序輸入
但是,在SQL服務器中,我們已經合併,它不需要任何排序。
好心向我解釋爲什麼合併需要排序輸入。
感謝,
Praveenkumar.K
合併的同時讀取和兩個排序輸入一行在一個時間比較加入的作品。在每一步中,我們會比較每個輸入的下一行。如果行相等,我們輸出一個連接行並繼續。如果行不相等,我們丟棄兩個輸入中較小的一個並繼續。由於輸入是排序的,我們知道我們丟棄的行少於任何一個輸入中的其餘行,因此永遠不能加入。
我們可以表達的僞代碼的算法:
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
謝謝Thangadurai.B,好explanation.Very樂於助人。 –
歡迎bro @PraveenKumar –