1

目標は、COLUMN_1 によるテーブル クエリからの削除時間を短縮することです。現在、これには最大 15 ~ 30 分かかる場合があります。

現在、テーブルのデータはカスケード ルールによって削除されています。COLUMN_1 は外部キーです。親行が削除されたときに BEFORE トリガーでパーティション全体を切り捨てるように、このアプローチを変更したいと思います。

また、データは COLUMN_2 によってアプリケーションからクエリされます。

この 2 つの列は、以下に示す関係にあります。

COL_1    COL_2
 1       1
         2
         3
         4
 2      
         5
         6
         7
         8
         9
         10
 3      
         11
         12
         13
...

両方に個別にインデックスがあります。テーブルには数百万のレコードがあります。多くの挿入アクションと読み取りアクションがあります。

いくつかの調査(oracle doc)の後、範囲間パーティション分割を使用します。パーティション
を動的に作成する必要があるため、おそらくRange Interval Partitioningが適切です...

4

1 に答える 1

0

次の 2 つのオプションがあります。

パーティション N_Partition を新しい空のテーブルに切り替え、そのテーブルを切り捨てます。

    ALTER TABLE ビッグテーブル
    EXCHANGE PARTITION N_partition
    WITH TABLE table_to_be_truncated
    インデックスを含む
    検証なし
    グローバル インデックスを更新します。

    TRUNCATE TABLE table_to_be_truncated
  • またはパーティションを切り捨てる
    ALTER TABLE big_table TRUNCATE PARTITION N_partition
    インデックスを更新します。

パーティションで何ができるかを説明した良い記事があります: パーティションのメンテナンス

于 2013-05-29T14:55:29.107 に答える