パッケージ内にリモートDBリンクを使用するカーソルがあります。 パッケージのパフォーマンスを最適化したい。 そこで、カーソルを最適化することから始めました。どのように複雑な分散クエリを最適化するには?
私は分析するためにいくつかの情報を与えるでしょう、
- クエリのみリモートDBへのリンクにはローカルのテーブルはありません。
- カーソルクエリは6つのリモートDBリンクを使用し、それらに結合操作 を実行します。
- すべてのDBリンクが同じDBを指していますが、異なるテーブルを指しています。
- SELECTは、任意の集計操作を持っていないと、わずか数の列のNVL 機能は
- 約90列は、クエリの構造は、それはありません
SELECT (SOME 90 COLUMNS) FROM [email protected]_one m1, [email protected]_one m2, [email protected]_one pa, [email protected]_one pb, [email protected]_one pc, [email protected]_one xa, (SELECT geo.country, geo.state FROM [email protected]_one geo) geo WHERE (m1.master_key = m2.master_key) AND (pc.weather_key = m2.cloud_key) AND (m1.order_type_id = pa.weather_key) AND (pa.weather_key = pb.weather_key) AND (m2.food_store_key = xa.food_store_key) AND ((nvl(m2.shop_key ,121)) = xa.store_key) AND (geo.country (+) = m1.country) AND (xa.food_type NOT IN ('COLD')) AND (m2.food_type_code NOT IN ('WINTER') OR m2.price_per_portion !=0) AND ((m1.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m1.last_purchase_date <= TRUNC(SYSDATE)) Or (m2.last_purchase_date >= TRUNC(SYSDATE-10) - 1/48 And m2.last_purchase_date <= TRUNC(SYSDATE)));
ある
を選択されています実際のクエリが構造は似ています。
remouteデータベース上で実行しようとする場合、クエリを投稿してください! –
なぜ4つのデータベースリンクがすべて同じデータベースに接続されているのでしょうか? 1つのデータベースリンクを使用してそれぞれ参照される4つのリモートオブジェクトがあることを意味しますか?あなたはリモートシステムに触れることができますか?それを処理する前にローカルシステムにデータを複製するという希望はありますか? –
@JustinCave申し訳ありません。間違いがありました.6人すべてが同じデータベースに接続しています。今質問を編集します。 –