Oracle TRUNCATEとDELETEの違いとは?【SQL徹底比較】
オラクルデータベースでは、truncateとdeleteはどちらもテーブル内のデータを削除するために使用されますが、重要な違いがあります。
- truncateはDDLステートメントであり、deleteはDMLステートメントです。truncateステートメントは表領域をすぐ解放しますが、deleteステートメントはしません。つまり、truncateを使用して表のデータを削除すると速くなりますが、ロールバックできません。
- truncateステートメントはテーブル内のすべてのデータを削除しますが、deleteステートメントは条件に基づいて一部のデータを削除することができます。
truncateステートメントはテーブル内のすべてのデータを削除するが、deleteステートメントは条件に基づいて一部のデータを削除することができる。 - truncate文はテーブルのトリガーを発動させませんが、delete文は発動させます。
- truncate文は、テーブルのON DELETEトリガーを発動させませんが、delete文は発動させます。
以上のように、すべてのデータを削除してロールバックしない場合は、truncateステートメントを使用できます。条件に基づいて一部のデータを削除したり、トリガーを起動する必要がある場合は、deleteステートメントを使用する必要があります。