在另一台服务器上的表上的SELECT上,在另一台数据库服务器上的JOIN上加入JOIN

时间:2013-03-12 13:45:48

标签: sql sql-server

我很好奇,如果在一个驻留在另一个SQL服务器实例上的表上JOINing与另一个服务器实例的同一个表的一个子集上加入,那么性能是否有任何差异。换句话说,以下两个查询的性能是否相同:

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不仅包含这两列。我想知道如果只选择我需要的列而不是整个表上的JOINing会产生任何差别,特别是考虑到这是一个跨服务器查询。

2 个答案:

答案 0 :(得分:1)

在我的头顶,我不确定,但没有测试它,它看起来像SQL将执行这些相同。如果您有SQL Server Management Studio并运行执行计划,则可以检查这一点。

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

答案 1 :(得分:1)

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

如果你看到了执行计划。两个计划都是一样的。