Sql-Server

查詢執行時間中的直接與連結伺服器連接

  • January 11, 2018

在調查了我們的 ETL 流程幾個月後,我陷入了一些奇怪的事情。我們有一台機器(A),我們正在使用它來從其他機器(B)中提取數據。

  • 當我使用從機器 (A) 到機器 (B) 的直接連接進行 SELECT 語句時,執行時間為 09-10 秒
  • 當我使用連結伺服器從機器 (A) 到同一台機器 (B) 發出相同的 SELECT 語句時,執行時間為 25-35 秒。

那麼為什麼會有這種差異呢?

在每種情況下都傳輸相同的數據。

在此處輸入圖像描述

在左側視窗中,當您直接連接到 FORBISPRD08 時:

  1. SQL Server Management Studio 向
  2. FORNSQPRD02\NAV01,誰擁有數據,並將其發送回
  3. SQL Server 管理工作室

在右側視窗中,當您使用連結伺服器時

  1. SQL Server Management Studio 向
  2. FORBISPRD08\BIS01,向其發送請求
  3. FORNSQPRD02\NAV01,誰擁有數據,並將其發送回
  4. FORBISPRD08\BIS01,將其轉發給
  5. SQL Server 管理工作室

看到不同?可能會發送相同的數據,但涉及更多步驟。當您需要數據時,連接到有數據的伺服器。

連結伺服器就像去酒吧,看到你喜歡的人,然後開始與他們的朋友聊天。你可能會取得進步——但不會那麼快。

引用自:https://dba.stackexchange.com/questions/195160