データベース リンクを構築してそのリンクを介して参加するだけで済む場合もありますが、パフォーマンスの問題が発生する可能性があります。このようなもの:
データベース 1 でデータベース 2 へのリンクを構築します。
CREATE DATABASE LINK db2 CONNECT TO user IDENTIFIED BY pw USING tns-alias;
データベース 1 のテーブルをデータベース 2 のテーブルに結合します。
SELECT my_value
FROM table_in_database_1 t1 JOIN table_in_database_2@db2 t2
ON t1.my_value = t2.my_value
リンクのパフォーマンスに応じて、データベース リンクと一時テーブルの両方を含むハイブリッド アプローチを使用することを選択できます。
上記のようにデータベース リンクを作成します。データベース 2 からのサブクエリで使用される値を保持する一時テーブルをデータベース 1 に作成します。
CREATE GLOBAL TEMPORARY TABLE db2_values (value VARCHAR2(20));
値を db2 から db1 にコピーします。
INSERT INTO db2_values
SELECT my_value
FROM table_in_database_2@db2;
最後に、データベース 1 のテーブルを一時テーブルに結合します。
SELECT my_value
FROM table_in_database_1 t1 JOIN db2_values t2 ON t1.my_value = t2.value;