gpt4 book ai didi

sql - 通过连接不同服务器上两个数据库中的两个表来查询数据

转载 作者:太空狗 更新时间:2023-10-30 01:37:15 24 4
gpt4 key购买 nike

在不同服务器上的两个不同数据库中有两个表,我需要将它们连接起来以减少查询。我有什么选择?我该怎么办?

最佳答案

您需要使用 sp_addlinkedserver 创建服务器链接。查看reference documentation供使用。建立服务器链接后,您将像往常一样构建查询,只需在数据库名称前加上另一个服务器的前缀。即:

-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID

建立链接后,您还可以使用OPENQUERY 在远程服务器上执行SQL 语句并仅将数据传回给您。这可能会快一点,它会让远程服务器优化您的查询。如果您在上面的示例中将数据缓存在 DB1 上的临时(或内存中)表中,那么您将能够像连接标准表一样查询它。例如:

-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')

-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID

查看 documentation for OPENQUERY查看更多示例。上面的示例非常人为。在此特定示例中,我肯定会使用第一种方法,但如果您使用查询来过滤掉一些数据,则使用 OPENQUERY 的第二种方法可以节省一些时间和性能。

关于sql - 通过连接不同服务器上两个数据库中的两个表来查询数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5145637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com