ORACLEでDELETEとTRUNCATEのどちらを使うか。

投稿日:2017-06-08

未だに迷う。
例えば、テーブル全件削除をしたいときは

delete * from tableA;

delete文なら、こうだし。

truncate tableA;

truncate文なら、こう。


削除条件を追加すると、こう。

delete * 
from tableA
where 
  name = 'あいうえお'
;

truncateでの削除条件は指定できない

ただ、処理時間は基本的にtruncate文のほうが早い

自分が認識しているdelete文との大きな違いは以下

  1. 実行時にトランザクションが確定する
    ※ロールバックが効かない
  2. 条件指定不可
    ※全件削除のみ
  3. deleteより実行が早い
    こんな感じ。

一時的な使用のテーブルじゃない限り、truncateはやめておいたほうがいいかな。







-ORACLE
-


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

[ORACLE]oracleのログの場所(リスナーログ、アラートログ)

ぶっちゃけ、ログの場所なんて普段意識してないわwww 存在は知ってるものの、ぶっちゃけ、普段からそんな場所など意識していたことがない。 もちろん、何かあったときは、ファイル検索で見つけりゃいいや~と思 …

[ORACLE]ORA-01950: 表領域’USERS’に対する権限がありません。のエラー対処法

  Oracle 12c R2(R1でも同様のエラーが発生)で ORA-01950: 表領域’USERS’に対する権限がありません のエラーが発生しました。 状況とし …

[ORACLE]ora-12638 資格証明の取出しに失敗しましたと表示される原因と対処法

客先で起こった内容。 状況 客先のdumpを取得するために、用意されているバッチファイルを実行した時に発生 ora-12638 資格情報の取出しに失敗しました バッチファイルの黒い画面で一瞬だけエラー …

[Oracle]破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。

破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。 破棄されたオブジェクトかどうかの判断(MSDK) MSDNでも破棄さ …

[ORACLE]統計更新を強制的にする

Oracleの統計情報の更新方法 頻度はそんなに無いというか、先日、トラブル対応時に必要に迫られたので・・・ 通常は、Oracleの統計情報は1日1回更新されるらしいんだけど、夜とかになるみたい。 多 …


カテゴリー