2016-08-01 7 views
0

ich derzeit eine OPENQUERY läuft bin zu beschleunigen, die eine Struktur ähnlich wie diese folgt:Gibt es trotzdem eine lange OPENQUERY

SELECT DISTINCT 
P.x, 
P.y, 
etc... 
FROM 
[DATA].[dbo].[dataP] P 
inner join 
OPENQUERY(localDb, 'SELECT ... 
LEFT JOIN(... 
Left join (... 
INNER JOIN... 
INNER JOIN(...') OQ 
on (OQ.x = P.x) 
where P.x > 0 

Gibt es bessere Verfahren für eine offene Abfrage optimieren?

Antwort

1

Erstellen Sie eine temporäre Tabelle oder CTE, um die Ergebnisse der OPENQUERY zu speichern, und verbinden Sie sich dann mit ihr.

SELECT * 
INTO #temp 
FROM OPENQUERY(localDb, 'SELECT ... 
LEFT JOIN(... 
Left join (... 
INNER JOIN... 
INNER JOIN(...') OQ 

Dann in Ihrer Hauptabfrage:

SELECT DISTINCT 
P.x, 
P.y, 
etc... 
FROM 
[DATA].[dbo].[dataP] P 
inner join 
#temp as OQ 
on (OQ.x = P.x) 
where P.x > 0 

Es wäre auch mögliche Filterbedingungen zu Ihrem OPENQUERY hinzuzufügen hilft die Ergebnismenge auf dem Remote-Server zu reduzieren.

Verwandte Themen