「削除時」トリガーがあるとします
1 削除を実行するとどうなりますか?
トリガーが起動され、トリガー本体が実行されます
- トランケートを起動するとどうなりますか?
私の推測 - truncate(DDL) と delete(DML) はまったく異なるコマンドであるため、何も起こりません
@Eggiが言うように、あなたはあなたの質問のあなたの主張に正しいです。
彼の答えと彼のリンクで与えられた詳細に加えて、TRUNCATE
あなたのテーブルの最高水準点をリセットしますが、そうでDELETE
はありません。
テーブルのサイズが大幅に変化する場合、これは非常に適切である可能性があります。
AskTomから:
Oracleは、フルスキャン中にデータが含まれていない場合でも、HWMの下のすべてのブロックをスキャンするため、HWMは適切です。これは、特にHWMの下のほとんどのブロックが空の場合、フルスキャンのパフォーマンスに影響を与えます。これを確認するには、1,000,000行のテーブルを作成し(または多数の行のテーブルを作成し)、このテーブルからSELECT COUNT()を実行します。ここで、その中のすべての行を削除すると、SELECT COUNT()1,000,000をカウントする場合と同じように、0行をカウントするのに同じくらいの時間がかかります(ブロックをクリーンアップする必要がある場合は、それ以上かかります!第9章の「ブロックのクリーンアウト」セクションを参照してください)。これは、OracleがHWMの下のすべてのブロックを読み取って、それらにデータが含まれているかどうかを確認するのに忙しいためです。これを、個々の行を削除するのではなく、テーブルでTRUNCATEを使用した場合に発生することと比較する必要があります。TRUNCATEは、テーブルのHWMを「ゼロ」にリセットし、テーブル上の関連するインデックスも切り捨てます。テーブル内のすべての行を削除する予定の場合は、この理由から、使用できる場合はTRUNCATE¿が最適な方法になります。
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:492636200346818072
それが役に立てば幸い...
詳細: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands