テーブルをアクティブフラグでパーティション化して、アクティブなレコードが1つのパーティションにあり、非アクティブなレコードが別のパーティションにあるようにします。次に、アクティブなフィルターが自動的に設定されているテーブルごとにアクティブなビューを作成します。データベースクエリエンジンは、アクティブなレコードが含まれるパーティションにクエリを自動的に制限します。これは、そのフラグにインデックスを使用する場合よりもはるかに高速です。
Oracleでパーティション表を作成する方法の例を次に示します。 Oracleにはブール列タイプがないため、Oracleの目的でテーブル構造を変更しました。
CREATE TABLE people
(
id NUMBER(10),
name VARCHAR2(100),
active NUMBER(1)
)
PARTITION BY LIST(active)
(
PARTITION active_records VALUES (0)
PARTITION inactive_records VALUES (1)
);
必要に応じて、各パーティションを異なるテーブルスペースに配置できます。インデックスを分割することもできます。
ちなみに、これはの繰り返しのようですこれ 質問、私が尋ねる必要がある初心者として、意図しない重複を処理するための手順は何ですか?
編集: コメントで要求されたように、Oracleでパーティションテーブルを作成するための例を提供しました