OracleでDBリンクを使用する接続のために、距離のあるサーバーからデータを取得する必要があります。単純な選択クエリの実行には約 6 秒かかりました。
いくつかのブロック (約 20 行) ごとにデータを取得するサンプルを次に示します。平均実行時間は約 25 秒です。
select * from external_table et where et.pk in
(select lt.pk from local_table lt where condition)
クエリの呼び出しには、pro*c(T-Max) で記述されたサービスを使用します。local_list
まず、ローカル テーブルからデータを受け取り (おそらく 20 ミリ秒かかりました)、 pro*c (for および string 操作) を使用してリストをいくつかの varchar 変数に作成します。このリストには直接データが含まれています fe:('001','002',...,'003','020')
次に、外部テーブルからデータを取得するためのクエリを実行します
select * from external_table et where et.pk in **local_list**
結果は、元のクエリ (6 秒) よりもはるかに高速です。
長い間うまく機能していましたが、PL/SQL プロシージャを使用してこれを行うには、db で直接バッチ ジョブを作成する必要があります。PL/SQLでこの種類のリストを作成する方法はありますか? または、元の取得クエリを高速化しますか?