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

Mut*_*mar 5 sql-server openquery

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

SELECT * FROM OPENQUERY(LinkServer, 'SELECT * FROM Product')
Run Code Online (Sandbox Code Playgroud)

我想加入这个链接服务器表与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
Run Code Online (Sandbox Code Playgroud)

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

可以这样做吗?有人可以帮忙吗?

Eas*_*ter 16

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

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

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

  • @Muthukumar,您是否注意到性能提升?结果集怎么样? (4认同)
  • @eaglei22问题是您仍在从远程服务器获取_所有_记录。当您已经可以在远程服务器上过滤结果集时,“OPENQUERY”真正发挥作用,这意味着需要传输的数据更少。 (2认同)