DBリンクを介してリモートでいくつかのテーブルにアクセスします。それらは非常に正規化されており、それぞれのデータは有効な日付です。各テーブルの数百万のレコードのうち、現在のレコードは約5万のサブセットのみです。
テーブルは、インデックスを追加したり、何らかの方法でテーブルに変更を加えたりすると、非常によく合う商用製品によって内部的に管理されます。
これらのテーブルへのアクセスを高速化するための私のオプションは何ですか?
DBリンクを介してリモートでいくつかのテーブルにアクセスします。それらは非常に正規化されており、それぞれのデータは有効な日付です。各テーブルの数百万のレコードのうち、現在のレコードは約5万のサブセットのみです。
テーブルは、インデックスを追加したり、何らかの方法でテーブルに変更を加えたりすると、非常によく合う商用製品によって内部的に管理されます。
これらのテーブルへのアクセスを高速化するための私のオプションは何ですか?
DBリンクを介してテーブルのサブセットのマテリアライズド・ビューを作成し、それらからクエリを実行することができます。
あなたはここで岩と困難な場所の間に立ち往生していると思いますが、過去には次のことが私のために働いていました:
現在のデータのスナップショットを指定された間隔で、1時間ごと、毎晩、または機能するものなら何でもプルダウンし、必要に応じて独自のテーブルにインデックスを追加できます。データにリアルタイムでアクセスする必要がある場合は、現在のすべてのレコードを一時テーブルにプルし、必要に応じてインデックスを作成してみてください。
あるデータベースから独自のデータベースにコピーするという余分なオーバーヘッドは、実際のメリットを小さくする可能性がありますが、一見の価値があります。
あなたは計画を見る必要があるでしょう。結合の順序を変更したり、基準を追加したり、ヒントを提供したりして高速化できる場合がありますが、説明プランがないと、なぜ遅いのかわからないため、結合できるかどうかさえわかりません。もっと早く。
最新ではなくなったデータをアーカイブします。(または、それが受け入れられない場合は、要件に適した失効しきい値を超えるデータ。)
必要なレコードを自分のデータベース/テーブルに毎日ダンプできますか?
マテリアライズ/インデックス付きビューを作成するのはどうですか?それは少し役立つかもしれません。