Sql server SQL Server链接服务器性能合理的解决方案?

Sql server SQL Server链接服务器性能合理的解决方案?,sql-server,Sql Server,我正在优化视图的性能,该视图在两个链接的服务器对象上收集数据 因此,视图位于服务器A上。 该视图从服务器B和C选择数据 当我打开脚本时,我注意到这个视图是一团混乱,使用子选择反复查询相同的表 为了简单起见,我不会发布700多行查询的实际代码,但我将创建一个简单的查询供您理解: SELECT * FROM [ServerA].myDB.dbo.tableA a INNER JOIN [ServerA].myDB.dbo.tab

我正在优化视图的性能,该视图在两个链接的服务器对象上收集数据

因此,视图位于服务器A上。 该视图从服务器B和C选择数据

当我打开脚本时,我注意到这个视图是一团混乱,使用子选择反复查询相同的表

为了简单起见,我不会发布700多行查询的实际代码,但我将创建一个简单的查询供您理解:

      SELECT    *
      FROM      [ServerA].myDB.dbo.tableA a
                INNER JOIN [ServerA].myDB.dbo.tableB b ON a.field = b.field
                LEFT JOIN ( SELECT  SUM(field) AS mysum
                            FROM    [ServerA].myDB.dbo.tableB
                            WHERE   field IN ( SELECT   MAX(value)
                                               FROM     [ServerA].myDB.dbo.tableA
                                               WHERE    anotherField IS NOT NULL )
                          ) tbl ON tbl.mysum < b.anotherField
我知道这个问题毫无意义。。这只是为了说明我的观点

使用SELECT*from ServerA.myDB.myLocalView在服务器a上的myDB中创建一个视图以查询表和服务器B中的表是否会更有效

CREATE VIEW myLocalView
AS
SELECT  *
FROM    dbo.tableA a
        INNER JOIN dbo.tableB b ON a.field = b.field
        LEFT JOIN ( SELECT  SUM(field) AS mysum
                    FROM    dbo.tableB
                    WHERE   field IN ( SELECT   MAX(value)
                                       FROM     dbo.tableA
                                       WHERE    anotherField IS NOT NULL )
                  ) tbl ON tbl.mysum < b.anotherField

在我看来,一个好的解决方案是查询所需的数据并将其放入临时表中,然后在同一服务器上的临时表之间进行连接

通过首先将数据拉过来,然后在本地进行连接,您将看到性能的巨大改进。由于连接过程中的网络延迟,尝试从服务器连接到服务器的速度非常慢。

我在tsql中没有看到[ServerB]或[ServerC]。我错过什么了吗?