Ich versuche, einige Zeilen aus einer Remote-Ansicht mit einer lokalen Tabelle zu verknüpfen. Die Ansicht hat ungefähr 300 Millionen Zeilen, daher möchte ich den REMOTE-Abfragehinweis verwenden, damit nicht alle 3 Millionen Zeilen auf meinen Computer übertragen werden müssen.
SELECT R.Something, L.ID, L.Something
FROM [dbo].[LocalTable] L
INNER JOIN (
SELECT TOP 100 Something, L_ID FROM [RemoteServer].[RemoteDB].[dbo].[RemoteTable]
) R
ON L.ID = R.L_ID
Dies gibt erwartungsgemäß 100 Zeilen zurück und benötigt im Grunde keine Zeit, wie ich erwartet hatte.
Jedoch,
SELECT R.Something, L.ID, L.Something
FROM [dbo].[LocalTable] L
INNER REMOTE JOIN (
SELECT TOP 100 Something, L_ID FROM [RemoteServer].[RemoteDB].[dbo].[RemoteTable]
) R
ON L.ID = R.L_ID
beginnt Tausende von Zeilen zurückzugeben. Ich habe es nach ein paar Sekunden beendet, aber es waren Zehntausende.
Wie kann ein Abfragehinweis meine Ergebnismenge ändern?
TOP
ohneORDER BY
bedeutungslos, aber es ist nicht viel besser, die obersten n Reihen zu ergreifen, wenn sie nicht tatsächlich in dem Satz sind, an dem Sie interessiert sind - was war der Grund, die Top 100 zu ergreifen Zeilen hier? 4)