6

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

SELECT * FROM OPENQUERY(LinkServer, 'SELECT * FROM Product')

我想将此链接服务器表与 Sql 服务器表连接起来以获得我的最终结果。现在我这样做,有一个临时表。

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

但是由于链接服务器产品表包含大量记录,因此需要花费一些时间才能将其填充到临时表中。所以我认为如果我事先加入两个表,而不是提取所有产品信息,它可以提高性能。

这个可以吗。?有人可以帮忙吗?

4

1 回答 1

17

我没有能力对此进行测试,但它确实提供了#tempTable通过直接加入远程服务器来绕过该选项的机会(如果这种连接是可能的)

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

以下是有关链接服务器查询的一些信息的链接,以及可能遇到的一些陷阱:http: //sqlblog.com/blogs/linchi_shea/archive/2009/11/06/bad-database-practices-abusing-linked-服务器.aspx

于 2012-09-05T16:10:13.113 回答