跨不同伺服器資料庫連接表
當從位於不同伺服器上的不同資料庫中的多個資料表檢索資料時,有幾種方法可以有效地連接這些資料表。
1. 使用伺服器連結
透過 sp_addlinkedserver
指令建立伺服器連結以建立資料庫之間的連線。像往常一樣透過查詢訪問,在連結伺服器名稱前加上資料庫名稱作為前綴,如範例所示:
<code class="language-sql">-- 来自 DB1 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
2. 使用 OPENQUERY
或者,考慮使用 OPENQUERY
執行遠端 SQL 語句並從其他伺服器檢索資料。此方法可優化頻寬並在遠端伺服器上最佳化查詢。您可以將資料快取到臨時表或記憶體表中以便稍後連接,如下例所示:
<code class="language-sql">-- 从其他数据库服务器获取数据 SELECT * INTO #myTempTable FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]') -- 现在我可以连接我的临时表以查看数据 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>
注意事項
伺服器連結和 OPENQUERY
之間的選擇取決於特定的用例和效能要求。伺服器連結提供永久連接,而 OPENQUERY
允許臨時資料檢索。對於需要過濾的場景,OPENQUERY
可能更有效率。請參考文件以了解更多範例和場景。
以上是如何有效率地跨不同資料庫伺服器連接表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!