3

別の SQL サーバー インスタンスに存在するテーブルでの結合と、他のサーバー インスタンスの同じテーブルのサブセットでの結合との間にパフォーマンスの違いがあるかどうか興味があります。つまり、次の 2 つのクエリのパフォーマンスは同じになります。

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 には、これら 2 つの列だけでなく、複数の列が含まれていると想定できます。特にこれがクロスサーバークエリであることを考えると、必要な列のみを選択するのと、テーブル全体で結合するのとでは、何らかの違いがあるのではないかと思っています。

4

2 に答える 2

1

IMO、この場合、両方のクエリのパフォーマンスは同じになります。

このための実行計画が表示された場合。両方の計画は同一になります。

于 2013-03-12T14:00:50.107 に答える
1

頭の中で、よくわかりませんが、テストしないと、SQLがこれらを同じように実行するように見えます。SQL Server Management Studio があり、実行計画を実行している場合は、これを確認できます。

内部選択がより複雑であれば、トップはより効率的であると思います(同じサーバー上にあるため)。それは本当にオプティマイザー次第です。

于 2013-03-12T13:52:37.620 に答える