Sql-Server
查詢執行時間中的直接與連結伺服器連接
在調查了我們的 ETL 流程幾個月後,我陷入了一些奇怪的事情。我們有一台機器(A),我們正在使用它來從其他機器(B)中提取數據。
- 當我使用從機器 (A) 到機器 (B) 的直接連接進行 SELECT 語句時,執行時間為 09-10 秒
- 當我使用連結伺服器從機器 (A) 到同一台機器 (B) 發出相同的 SELECT 語句時,執行時間為 25-35 秒。
那麼為什麼會有這種差異呢?
在每種情況下都傳輸相同的數據。
在左側視窗中,當您直接連接到 FORBISPRD08 時:
- SQL Server Management Studio 向
- FORNSQPRD02\NAV01,誰擁有數據,並將其發送回
- SQL Server 管理工作室
在右側視窗中,當您使用連結伺服器時
- SQL Server Management Studio 向
- FORBISPRD08\BIS01,向其發送請求
- FORNSQPRD02\NAV01,誰擁有數據,並將其發送回
- FORBISPRD08\BIS01,將其轉發給
- SQL Server 管理工作室
看到不同?可能會發送相同的數據,但涉及更多步驟。當您需要數據時,連接到有數據的伺服器。
連結伺服器就像去酒吧,看到你喜歡的人,然後開始與他們的朋友聊天。你可能會取得進步——但不會那麼快。