我有一個存儲過程都到三個不同的服務器,並得到價值從所有的人都像這樣:不同服務器上更新一個臨時表從多個表中的列
Update #temp
set col1.temp = t1col1.table
from #temp inner join table1.Server1 on temp.id = table1.id
Update #temp
set col2.temp = t2col2.table
from #temp inner join table2.Server1 on temp.id = table2.id
Update #temp
set col3.temp = t3col3.table
from #temp inner join table3.Server1 on temp.id = table3.id
注:以上前更新聲明我已經用本地服務器上的所有值更新了我的臨時文件
這就是我更新表的方式。爲了更好地優化並獲得更快的結果,我這樣做:
update #temp
set col1.temp = t1col1.table,
col2.temp = t2col2.table,
col3.temp = t3col3.table
from #temp inner join table1.server1 on temp.id= table1.id
leftjoin table2.server1 on temp.id = table2.id
leftjoin table3.server1 on temp.id = table3.id
的基本想法我是爲了減少花費多次更新一個更新的時間。該存儲過程從3臺不同的服務器中生成大約300,000行和大約30列。
我有幾個基本問題:
是更好地使用多個UPDATE語句或通過多個單UPDATE語句連接
如果我可以用一個UPDATE語句比它更好地使用INNER JOIN或LEFT JOIN編寫更新
處理大量數據時JOIN是否耗時? (注意:我從我的列中獲得的所有服務器和表都有數百萬條記錄)哪個JOIN更好?
我嘗試過使用INNER JOINs,但它不適用於表2和表3;它只是工作的表1
上述UPDATE語句是服務器1,它們是相同的服務器2和服務器3,因爲他們有一定的價值,我需要。
什麼約定您使用拉從其他服務器上的數據,鏈接服務器(http://technet.microsoft.com/en -us /庫/ ms188279.aspx)? – AWinkle
我不明白你在說什麼約定,但這是我如何從[服務器] .tablename選擇值選擇 –
@JordanBelfort你的意思是[database] .tablename?我可能在這裏絕對錯誤,但聽起來更像是你在同一臺服務器上有多個數據庫。那麼不用連接服務器或其他約定就可以從多個地方提取數據。所以服務器1將DB1,服務器2將DB2等... – Jfabs