3

我很好奇在驻留在另一个 SQL 服务器实例上的表上加入和在同一个表的子集上加入另一个服务器实例之间是否存在性能差异。换句话说,以下两个查询的性能是否相同:

SELECT t1.CustomerName, t2.Address, t2.Phone 
FROM Table1 t1
LEFT JOIN [Server X].dbo.Table2 t2 on t2.CustomerID = t1.CustomerID

SELECT t1.CustomerName, t2.Address, t2.Phone
FROM Table1 t1
LEFT JOIN (SELECT CustomerID, Address. Phone FROM [Server X].dbo.Table2) 
t2 
on t2.CustomerID = t1.CustomerID

我们可以假设 Table2 不仅仅包含这两列。我想知道仅选择我需要的列与在整个表上加入是否会产生任何差异,特别是考虑到这是一个跨服务器查询。

4

2 回答 2

1

IMO,在这种情况下,两个查询都将具有相同的性能。

如果你看到这个的执行计划。两个计划将是相同的。

于 2013-03-12T14:00:50.107 回答
1

在我的脑海中,我不确定,但如果不对其进行测试,在我看来 SQL 会执行这些相同的操作。如果你有 SQL Server Management Studio 并运行执行计划,你可以检查一下。

如果内部选择更复杂,我相信顶部会更有效(因为它会在同一台服务器上)。这真的取决于优化器。

于 2013-03-12T13:52:37.620 回答