2017-07-12 5 views
0

私たちは、顧客ごとに個別のデータベースを持っていますが、それぞれのテーブル構造は同じです。 .Netアプリケーションでは、すべてのデータベースをスキャンして、一致するエントリの結果をユーザーに表示する必要があります。すべてのデータベースに対してUNION ALLを実行するか、各クエリを並行して実行してから、それらを.Netアプリケーションから結合する方が速いのだろうかと思っていました。DB2ユニオンすべて対パラレル実行

Select EmpName, EmpSal, EmpDate 
from A.Emptable 
where EmpDate > '2015-01-01' 
UNION ALL 
Select EmpName, EmpSal, EmpDate 
from B.Emptable 
where EmpDate > '2015-01-01' 
UNION ALL 
Select EmpName, EmpSal, EmpDate 
from C.Emptable 
where EmpDate > '2015-01-01' 

VS.

var response = await Task.WhenAll(GetEmpData(A,'2015-01-01'),GetEmpData(B,'2015-01-01'),GetEmpData(C,'2015-01-01')); 
var result = response[0].Concat(response[1]).Concat(response[2]).ToList(); 

ありがとう:各クエリを呼び出し、そのような結果を結合するために、.NETメソッドGetEmpDataを作成

+0

「個別のデータベース」とは、実際には「個別のスキーマ」を意味しますか?期待される結果の大きさはどれくらいですか? – mustaccio

答えて

0

あなたのフェデレーションがすべての側面(特にプッシュダウンとパフォーマンス面)に合わせて最適に構成されている場合、長期的にはUNION ALLをよりメンテナンス可能にすることが期待されます。相対的なパフォーマンスに関しては、多くの要因がそれに影響を与えるため、測定することができます。

関連する問題