2017-01-19 9 views
1

私はこのシナリオでは答えが「いいえ」と仮定していますが、紛失していたものがあるかどうかを尋ねてきました。Oracleのパーティション表でローカル索引を使用する利点はありますか?

データの読み込みを容易にするために、データは6つの別々のテーブルにロードされた後、メインテーブルにパーティションスイッチされます。これらのローディングテーブルを区別する唯一のものはデータのソースです。したがって、それぞれにメインテーブルを分割するために使用される一意のデータソース列があります。時々、メインテーブルのこのデータソースを参照する特別なクエリがありますが、このテーブルをクエリする標準レポートはこの列を完全に無視します。このテーブルから個々のレコードを挿入/更新/削除するものはありません。したがって、インデックスを更新する必要はありません。

この場合、グローバルインデックスではなくローカルインデックスを使用する理由はありますか?

答えて

5

ローカルインデックスは、パフォーマンス上の理由からパーティション化を使用する場合、非常に意味があります。

問合せに常にパーティション・キーが含まれている場合、Oracleはその特定のパーティションのみをスキャンします(これは「パーティション・プルーニング」と呼ばれます)。

インデックスルックアップの恩恵を受ける追加の条件がある場合、データベースはグローバルインデックスよりもはるかに小さいローカルインデックスをチェックする必要があり、ルックアップが高速になります。

あなたのケースでは、決してパーティションキーをクエリに含めることができない場合は、ローカルインデックスが役立たないことは間違いありません。

+0

パフォーマンスに問題がありますか? – BobC

+0

パーティションが多数ある場合、Oracleは分離された索引のように各パーティションを処理する必要があるため、パフォーマンスはさらに悪化します。 –

関連する問題