1

この質問が明白なものであるかどうかはわかりません。大量のデータを削除する必要があります。削除には費用がかかります。テーブルを切り捨てる必要がありますが、メモリが解放されて透かしが変更されるように完全に切り捨てる必要はありません。

選択した行の条件に基づいてテーブルを切り捨てることができる機能はありますか?

4

1 に答える 1

6

あなたのテーブルがどのように構成されているかによって異なります。

1)(大きな)テーブルが同様の条件に基づいて分割されている場合(たとえば、前月のデータを削除したいが、テーブルが月ごとに分割されている場合)、テーブル全体ではなく、そのパーティションのみを切り捨てることができます。

2) ダウンタイムがある場合のもう 1 つのオプションは、保持したいデータを一時テーブルに挿入し、元のテーブルを切り捨ててからデータをロードし直すことです。

insert into <table1>
select * from <my_table>
where <condition>;

commit;

truncate table my_table;

insert into my_table
select * from <table1>;

commit;

--since the amount of data might change considerably, 
--you might want to collect statistics again

exec dbms_stats.gather_table_stats
     (ownname=>'SCHEMA_NAME', 
      tabname => 'MY_TABLE');
于 2012-10-02T16:24:21.940 に答える