2016-11-15 12 views
0

2つの大きな表のデータ比較に問題があります。oracleの2つの大きな表の間のデータを比較する方法

シナリオ:

問題:私は、Oracle DBのテーブルに格納され、その上に生Siebelアプリケーションを有している2つのデータセット間のギャップを見つけなければなりません。私は単純にアプリケーションのパフォーマンスに影響を与えているデータセット全体(8,000,000行)でselect文を使用することはできません。単にデータの1セットにカーソルを置くと、データの他のセットと私のロジックに比較し、ロジックにACC他のテーブルでギャップを挿入

を、この溶液に、1つを比較する:私はそれを今やっていること

行は非常に遅いプロセスであり、いつかタイムアウトしてしまいます。

誰もがこれより優れた解決策を提案することができますので、プロセスをスピードアップして本当に助けになります。

+0

**(1)** 8M行は小さなセットです。私はこのテーブルの選択があなたのDB **(2)に何らかの影響を与えるかどうかは疑問です**カーソルはソリューションのパフォーマンスが悪いです。私はあなたの問題のより良い説明を与えるならば、私たちはあなたをサポートすることができるかもしれません –

+0

@DuduMarkovitzこんにちは、返信ありがとう、実際には、私はsiebelのスキーマで働いていますし、フルスキャンをしたくない過去に私たちのsiebelアプリケーションでパフォーマンスの問題を引き起こしていたテーブルは、一度に約100行または1000行を選び、それを私たちのメインのプロダクションテーブルと比較する必要があります。 – avenger

答えて

-1

正確な使用例に応じて、パフォーマンスを向上させる方法はいくつかあります。あなたが提供した情報に基づいて、以下は動作するかもしれないいくつかの事柄です。

  1. 「マイナス」または「存在しない」を使用してクエリを書き換えます。

  2. where句で使用される列にインデックスを作成します。インデックスの作成には時間とリソースがかかり、システムに影響を与えるため、サーバーの負荷が低い場合はインデックスを作成することをお勧めします。索引がすでに存在し、使用されていない場合は、ヒントを使用してください。

  3. これらのテーブルのデータが静的である場合は、テスト環境でテーブルを複製し、適切なテストを実行してください。

カーソルを8M行に使用することは、これが唯一の方法でない限り、非常に効率的ではありません。

詳細をお伝えいただければ、より良い提案をすることができます。

+0

これも役に立ちます - http://stackoverflow.com/questions/3980462/how-to-compare-two-tables-column-by-column-in-oracle?rq=1 – tdc

+0

こんにちは、返信ありがとう、実際は私ですsiebelスキーマで作業していて、過去にsiebelアプリケーションでパフォーマンスの問題を引き起こしていたテーブルのフルスキャンを実行したくない場合は、一度に約100行または1000行を選んでメインの本番表と比較してください。 – avenger

+0

これを確認してください。 tdc

関連する問題