首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server Linked Server 五大效能殺手與解決之道

     編輯:關於SqlServer

五大殺手

  1. 推模式 vs 拉模式:`INSERT INTO Local SELECT * FROM LinkedServer...`(推)遠慢於 `INSERT INTO LinkedServer... SELECT * FROM Local`(拉)。
  2. 跨服務器 JOIN:大表 JOIN 需搬移海量資料。對策:遠端預先過濾/彙總、用 `REMOTE` JOIN HINT 強制將小表推到遠端。
  3. 跨服務器 UNION:同樣觸發資料搬移。對策:遠端視圖/預存程序先 UNION 再回傳。
  4. 過度複雜查詢:優化器無法產生最佳計畫。範例:子查詢遠端聚合導致 10 分鐘 → 拆為變數兩步驟 1 秒(程式碼對比)。
  5. 同實例仍用 Linked Server:應改用 `Database.dbo.Table` 三部份命名,效能更優。

深層原因:權限導致統計資訊不可見

Linked Server 登入若無 `sysadmin`/`db_owner`/`db_ddladmin`,優化器無法讀取遠端統計資訊,產生劣質計畫。SQL 2012 SP1 起僅需 `SELECT` 權限即可。

架構層面建議

  • 發行/訂閱或 Agent 作業同步資料至本地,移除 Linked Server 依賴。
  • 權衡:同步延遲 vs 查詢效能、維運複雜度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved