2016-08-01 12 views
0

をスピードアップするためにとにかくあります私は現在、これと同様の構造は次のOPENQUERY実行しています: は長い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 

が開いてクエリを最適化するための任意のより良いプラクティスはありますか?

答えて

1

一時テーブルまたはCTEを作成して、OPENQUERYの結果を格納してから結合します。

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

次に、あなたのメインクエリで:

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 

また、リモートサーバー上の結果セットを減らすために、あなたのOPENQUERYにすべての可能なフィルタリング条件を追加するために役立つだろう。

関連する問題