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

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

関連記事

no image

OracleでLISTAGG関数を使ったら、世界が変わった話。

11gR2からGROUP_CONCAT(複数行をまとめて1列に)が可能に http://d.hatena.ne.jp/kkz_tech/20150311/1426048592 日本の中心付近で仕様変更 …

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

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

続) 何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

この土日は休日出勤でした・・・ そして、昨日・・・新しい現象が発生しました。 日本の中心付近で仕様変更と闘うSE日記日本の中心付近で仕様変更と闘うSE日記http://ht-jp.net/blog/p …

[ORACLE]ORA-24344:正常に終了しましたが、コンパイル・エラーがあります。

全然、正常に終われてねぇんじゃん?? って思った。 ビューの作成時に発生。 ネットで検索するも、明確な回答は見当たらず・・・ ただ、エラーには違いないので、ビューが正しく作成されていないことになる。 …

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

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


カテゴリー