嗯,我知道這是可能選擇加入了在不同的數據庫,如果這些數據庫在同一臺服務器和安全組,在這個問題的討論現在Can we use join for two different database tables?是否選擇在不同的數據庫中加入任何性能問題?
我的問題是表:是否選擇加入與在同一數據庫中選擇連接相比,不同的數據庫會產生性能問題?
嗯,我知道這是可能選擇加入了在不同的數據庫,如果這些數據庫在同一臺服務器和安全組,在這個問題的討論現在Can we use join for two different database tables?是否選擇在不同的數據庫中加入任何性能問題?
我的問題是表:是否選擇加入與在同一數據庫中選擇連接相比,不同的數據庫會產生性能問題?
我真的不這麼認爲。因爲它們在同一個服務器實例上。當您查詢時:
Select * from sys.sysprocesses
,這將顯示所有數據庫上在該特定服務器上運行的所有進程。因此,從某些方面來看,我們可以這樣認爲,來自每個數據庫的所有待處理進程都是同一臺服務器對處理步驟的貢獻。另外,如果您右鍵單擊服務器實例,請選擇Activity Monitor
,您可以看到Processes
和系統資源以及與該服務器性能相關的I/O,而不是數據庫性能。
如果您查看actual or estimated execution plan
graphic icons
以查詢graphic execution plan
,則不存在用於數據庫級別但是表級別的此類圖標。 所有你需要的圖形圖標可以在這裏找到: https://technet.microsoft.com/en-us/library/ms175913(v=sql.105).aspx
我認爲它只會有性能問題,當您從其他服務器實例加入到同一個表,因爲即使他們是同桌,邏輯從加盟另一臺服務器正在發送查詢並從服務器獲取結果,這真的取決於服務器的性能。例如,openquery()
和四部分分佈式查詢,如[Server].[Database].[Schema].[NameOfObject]
。這些查詢將從您當前的服務器發送到目標服務器,並且無論是否具有Where
條件,select *
都將在該服務器上執行,該服務器系統會決定如何快速獲得結果。