Sql server 如何在使用openquery时连接链接服务器表和sql server表

Sql server 如何在使用openquery时连接链接服务器表和sql server表,sql-server,openquery,Sql Server,Openquery,我使用openquery语法从链接服务器读取数据 SELECT * FROM OPENQUERY(LinkServer, 'SELECT * FROM Product') 我想将此链接服务器表与Sql server表联接,以获得最终结果。现在,我做这件事,有一个临时表 SELECT * INTO #Temp_Products FROM OPENQUERY(TREPO, 'SELECT ID, Name FROM Products') SELECT * FROM #TEMP_PRODUCTS

我使用openquery语法从链接服务器读取数据

SELECT * FROM OPENQUERY(LinkServer, 'SELECT * FROM Product')
我想将此链接服务器表与Sql server表联接,以获得最终结果。现在,我做这件事,有一个临时表

SELECT * 
INTO #Temp_Products
FROM OPENQUERY(TREPO, 'SELECT ID, Name FROM Products')

SELECT * FROM #TEMP_PRODUCTS A
INNER JOIN ORDERED_PRODUCTS B
ON A.ID = B.ID
但是,由于linkserver产品表包含大量记录,因此需要时间才能填充到temp表中。因此,我认为,如果我先加入两个表,就可以提高性能,而不是提取所有产品信息


这能做到吗。?有人能帮忙吗?

我没有能力测试这一点,但它确实提供了一个机会,可以通过直接连接到远程服务器(如果可能的话)来绕过这个诱人的选项

SELECT  A.* 
  FROM  OPENQUERY(TREPO, 'SELECT ID, Name FROM Products') A
 INNER 
  JOIN  ORDERED_PRODUCTS B
    ON  A.ID = B.ID

这里有一个链接,指向有关链接服务器查询的一些信息以及可能遇到的一些陷阱:

尝试编写存储过程并将其应用于链接服务器。从另一台服务器调用存储过程,并将其结果传递到表变量DECLARE vTable table中。然后,您可以使用存储过程的缓存执行计划来提高速度,并减少结果集。连接table变量的过程大体上与连接temp表的过程相同。我无法控制链接服务器。我无法在该服务器中创建SP。请从OpenQueryTrep中选择*,“从产品中选择ID,名称”A内部联接订购\U A.ID=B.ID上的产品B重试this@sankaras:你提到的问题与我的方法几乎相同。它会提高性能吗?@muthukumar:为了提高性能,您不会在网络上带来很多非常缓慢的数据,而是按照TexasTubbs所描述的那样做。这将有所改善performance@Muthukumar,您是否注意到性能有所提高?结果集如何?对我来说,使用OPENQUERY和不使用OPENQUERY所花费的时间大致相同。@eaglei22问题是您仍然在从远程服务器获取所有记录。当您已经可以在远程服务器上筛选结果集时,OPENQUERY真的很出色,这意味着要传输的数据更少。@TomLint啊,好的,这是有道理的。非常感谢。