複数のキーでOracleリンクサーバーテーブル(10億行)とSQL Serverテーブル(100行)を結合する必要があります。
SELECT * FROM OPENQUERY(EDW, 'SELECT * FROM Oracle_TABLE') A
INNER JOIN SQL_TABLE B
ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2
INNER JOIN SQL_TABLE C
ON A.KEY3 = C.KEY1 AND A.KEY4 = C.KEY2;
しかし、Oracle_TABLEは非常に巨大であり、このクエリの実行には時間がかかりすぎます。 SQL_TABLEをOPENQUERYに渡し、Oracleサーバーで結合を行う方法はありますか?
OK、そして逆に考えます。一般的な概要のようなもの:
INSERT INTO SqlServerTable SELECT * FROM OPENQUERY (LinkedServerName, 'query text');
いくつかのステップを逃した可能性がありますが、この基本的なアプローチは、少量のSQL ServerデータをOracleに移動し、クエリを実行して、結果をSQL Serverに読み取ります。
[〜#〜]編集[〜#〜]: https://stackoverflow.com/questions/29200147/how-do -i-convert-an-Oracle-timestamp-data-type-to-sql-server-datetime2-data-typeJon of All Trades彼がOracle timestamp
をSQL Serverに変換する方法を示しましたdatetime2
。
(ただし、テストするOracleサーバーはありません。)
REMOTE
hint が機能するかどうかを確認してください。
SELECT * FROM SQL_TABLE B
INNER REMOTE JOIN linkedServerName.dbname.schema.Oracle_TABLE A
ON A.KEY1 = B.KEY1 AND A.KEY2 = B.KEY2
INNER JOIN SQL_TABLE C
ON A.KEY3 = C.KEY1 AND A.KEY4 = C.KEY2