0

うさぎはシナリオです:

メイン DB サーバー: SQL Server 2008 R2 と Oracle 11g へのリンク サーバー。

次のようなクエリを作成するストアド プロシージャがあります。

Select t1.a, t1.b, t2.c, t3.d
From LocalTable a inner join LinkedServerName..Schema.Tableb b on a.aNumber= b.id
     inner join LinkedServerName..Schema.Tablec c on b.value = c.id
     inner join LinkedServerName..Schema.Tabled d on a.someOtherNumber = d.Id
 Where a.WhereValue1 = @Parameter1
   and b.WhereValue2 = @Parameter2 

それは痛々しいほど遅くなります。Where句はパラメータを使用するため(使用できる場合でも)、OpenQueryを使用してクエリを改善する方法を理解できません。

データ取得を改善する方法はありますか? Oracle DB から何百万ものレコードを取得しています。

どうもありがとうございます。

4

1 に答える 1

0

私がお勧めするのは、少なくともテーブルb、c、dを結合し、そのビューに結合するビューをOracle側に作成することです。LocalTable にはいくつのレコードがありますか? 数が非常に少ない (10,000 以下) 場合は、Oracle 側で全体を結合することをお勧めします。

あなたの全体的な目的は何ですか?データをマージできるように、レポートを作成したり、異なるレコードを識別しようとしていますか? オラクル側で変更を加えることができますか?

于 2013-03-14T00:49:46.963 に答える