2012-03-05 2 views
0

「5mintime」という名前の列に1日間隔パーティションを持つ表があり、インデックスも作成しています。 "5mintime"列には、2011年3月1日、2月3日、2月3日などのデータを含めることができます。つまり、時間コンポーネントはありません。UIからも、最小日として1日のみを選択できます。 私の質問は、選択クエリを実行している間に、パーティションが既に存在するため、インデックスのために得られる利点があるということです。インデックスを削除すると、フリップ側で挿入が高速に行われるため、 。Oracleの同じ列でパーティション化と索引付けを使用すると、そこに何らかの利点があります

+1

これは5分間と呼ばれていますが、時間成分はありませんか?ちょっと変わったようだ。 –

答えて

1

私が正しいことを理解していれば、インデックスの必要はないと思います。
ローカルインデックスは、すべての行で同じ値を持つすべてのパーティションでインデックスされます(つまり、2011年3月1日2011年3月2日のパーティーでは、2011年3月2日のパーティーでの2011年3月2日のパーティーなど)。
グローバルインデックスは実際にはテーブル全体のインデックスを作成しますが、パーティショニングを既に行っているので便利ではありません。

しかし、チェックしないでください。

+0

返事をありがとう。私は確かにそれをチェックしますが、私はこのフォーラムにこれを載せて素早く答えようと考えていたので、インデックスは有用ではありません。なぜなら、oracleは決してそれを使うつもりはないからです。 –

1

毎日のデータが独自のパーティションに入れられ、数日以内にデータを検索することはできませんが、このインデックスに値が追加されることはありません。

あなたは、SQLクエリの監視を可能にすることによって、このインデックスを使用しているかどうかを確認することができます。

alter index myindex monitoring usage;

そして、それはいくつかの時間後にそれのためのv$object_usageを照会することにより使用されていますかどうかを確認します。

+0

説明をありがとう私はこの事を試してみるだろうが、私はもう一つの質問がある私はインデックスを作成するappid(アプリケーションID)であるもう一つのフィールドを持って、今システムに来るデータのサイズは巨大です"5mintime"に基づいて記述されているように3億5000万行が1つのパーティションに毎日入っており、データは2000個のappidに対応しているため、appidに基づいてサブパーティションを作成してからインデックスにappidが必要です。 –

+0

データの使用方法に基づいてインデックスを作成し、パーティションを分割する必要があります。その5分の列でデータをパージすると、それによってパーティション化するのが理にかなっています。ほとんどのクエリにappidが含まれていない場合は、なぜパーティションやインデックスを作成するのですか? –

+0

すべてのクエリは、フィルタリング基準としてappidと5mintimeの両方のこの基準を使用しています。 –

関連する問題