私はtableB
でデータを更新するプロシージャを作成する必要がありますが、他のデータベースから tableA
(db-linkを使用しています)のデータを取得する必要があります。他のデータベースからテーブルデータを更新する最も効率的な方法は何ですか?
for tmp in cur loop
if tmp.name != (select name from tableB where tableB_ID = tmp.tableA_ID) then
update tableB set name = tmp.name where tableB_ID = tmp.tableA_ID;
end if;
end loop;
との差異を求めて2つのテーブルからの各行と各列をチェックしてください。私の考えでは、カーソルcursor cur
へtableA
データをロードするだけでループを作成することです。
これは私の問題を単純に表現したものです。これは約25行の異なる列を持つことができ、約1000行の更新が必要な場合があるためです。もっと良い解決策は、すべての相違を1つの行から保存し、多くのset
で1つの更新ステートメントを作成することでしょうか? 私はそれを効率的に行う方法がちょっと混乱しています。多くの簡単な更新プログラムを作成するか(最大25個の更新を実行する必要があります)、複雑な更新プログラムを1つだけ作成します。最後に、更新する必要がある行の数についての情報がありません。誰かがより効率的なアイディアを持っているのかもしれない。
ありがとうございました!
使用しているデータベースを指定してください。 (SQL Server、Oracleなど) – Av4t4r
大きな話題ですが、あるインスタンスから別のインスタンスへの変更を同期したい場合(そして独自のソリューションをロールアップするノウハウを持っている場合)は、set操作を使用することをお勧めします(選択する*からMINUSを選択*をtab @ somelinkから選択)。また、更新プログラムを使用しないで、削除した後に挿入してください。 – tbone
@ Av4t4r両方のデータベースがOracleです。 。 – Ice