テーブル2に30億行(テーブル1)の30億行のテーブルがあります。これらの2つのテーブルは関連しています。私はテーブル1とその関連する行から30億行をテーブル2から削除しなければなりません。テーブル1はテーブル2の子です。私はplsqlからfor allメソッドを使ってみましたが、あまり役に立たなかった。そして、私はoracleパーティション戦略の使用を考えました。私はDBAではないので、選択したID番号の主キー列で既存のテーブルのパーティショニングが可能かどうかを知りたいですか?私の主キーは64ビットの自動生成番号です。関連する2つのテーブルから30億行を削除する方法
答えて
非常に疑わしいですね。
実際のユースケースの場合は、パーティション化されたものも含めて、明確に定義された別のテーブルを作成して削除しないで、insert /*+ append */ into MyNewTable select ...
を使用して入力します。
最も一般的な方法は、日付(レコードの作成日、イベントの日付など)にパーティションを定義することです。
また、これが本当のユースケースである場合は、本当の助けを得るために、インターネット上の助言を求めず自分でやってはいけないことを強くお勧めします。
パーティション化するには、そのオプションとエンタープライズエディションのライセンスを購入する必要があります。 – BLaZuRE
@BLaZuREもし彼がちょうど遊んでいて本当に重要なことはないが、それがビジネスのように行動し、ライセンスを購入して業界標準に追いつくか、無料のソリューションに移り、そうでなければ、彼は巨大な死んだテーブルとビジネスを見つけることができません。 –
オブジェクトをオンラインでパーティション化するのは難しいです(dbms_redefinitionを使用して行うことができます)。そして必要ではありません(あなたが与えた細部による)。
ベストアイデアは、望ましくない行がないオブジェクトを再作成することです。これは、(あなたがテスト環境でそれらをテストする必要があります)消費者をオフラインに行うことができますが、スクリプトがOKであれば、彼らのために非常に小さいダウンタイムとなり
create table undesired_data as (select undesired rows from table1);
Create table1_new as (select * from table1 where key not in (select key from undesired_data));
Create table2_new as (select * from table2 where key not in (select key from undesired_data));
rename table1 to table1_old;
rename table2 to table2_old;
rename table1_new to table1;
rename table2_new to table2;
recreate constraints;
check if everything is ok;
drop table1_old and table2_old;
:
例えば、いくつかの簡単なコードは次のようになります。
これは、もちろん、次回のためにパーティション化されたテーブルに移動する機会にもなります。 –
@DavidAldridge素早い返答をありがとう。私が考えたもう1つのアプローチは、テーブルをオフラインにして、必要な行を持つ新しいパーティションを作成することです。その後、不要な行でパーティションを削除します。私は必要な行を識別することができます。しかし、プライマリ・キーに基づいて識別された行に対してパーティション化を実行できるかどうかはわかりません。主キーに基づいて既存のテーブルを分割する例はありますか?また、私は、パーティショニングに比べてCTASのアプローチが時間を節約できるかどうかを知りたいですか? –
- 1. 関連する子テーブルから行を削除する方法
- 2. ASP.NETアイデンティティコア2.0からロール関連テーブルを削除する方法
- 3. 2つのテーブルから関連するレコードの内容を削除する方法はありますか?
- 4. 角度2のテーブルから行を削除する方法
- 5. 2つのテーブルから行を削除する
- 6. YII - すべてのテーブルから関連する行を削除するには?
- 7. 動的データのlist.aspxから関連テーブルを削除する方法
- 8. Laravel 5.4関連テーブルの行と行を削除する
- 9. 同時に2つの関連するテーブルでLaravelを削除します
- 10. 2つの関連テーブルのすべてのレコードをトランザクションで一緒に削除する方法は?
- 11. 関連テーブルのSQL削除
- 12. テーブルの2行を削除または追加する方法
- 13. 参加する2つのテーブルから削除しますか?
- 14. BiTemporalテーブルから行を削除(物理的削除)する方法
- 15. 2つのリストからHTMLリストアイテムを削除する方法
- 16. Codeigniter:フォルダから2つのテーブルと画像を削除する
- 17. 2つのエンティティ間の関係を削除する方法
- 18. テーブルから行を削除するmysql
- 19. 2つの条件でテーブルから不要な行を削除する
- 20. 2つのテーブル(SQLTransactionを使用)から関連するレコードの内容を削除する方法はありますか?
- 21. クエリで2つのテーブルを関連付ける方法は?
- 22. 2つ以上のテーブルから削除する
- 23. MySQL - 多対多関係の関連行を削除する方法
- 24. 関連付けられたテーブルからレコードを削除するPHP
- 25. Sequelize.JS Postgresql - 関連テーブルからSUMテーブルを比較する方法
- 26. 3つの関連するテーブルからデータをフェッチする方法
- 27. 2つのテーブルを関連付ける
- 28. Firebase関連するデータを削除する方法
- 29. Laravel delete method:関連するファイルを削除する方法
- 30. モデルを削除した後の関連付けを削除する方法
使用しているOracleのバージョンは? –
私はOracle 11gを使用しています –