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]破棄されたオブジェクトにアクセスできません。 オブジェクト名 ‘oracleconnection’ です。

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

Oracleで「ORA-00918: 列の定義が不明瞭です 」のエラーの解決法と発生理由

発生したエラー ORA-00918: 列の定義が不明瞭です 原因 原因は、同じ列名やテーブルの別名を使用していること。 解決方法 Select句で羅列している列に同一の列名(別テーブル)があれば、as …

[ORACLE]多分、例外的なora-00911:文字が無効ですエラーの解決方法

多分、このエラーを目にする機会はそれなりにあって、大体の対処法はググればすぐに見つかると思う。 例えば、 SQL実行時にはOKなのに、C#のOracleDbAccess実行時にエラーになる 全角スペー …

[ORACLE]今接続しているサーバー・スキーマとかを確認する

Oracle使ってる時に、今どのサーバーに繋いでるの?とか、今どのスキーマに繋いでるの? ってなるとき無いですか? そんなときの確認法。 今、どのサーバーに接続してるんだ? 先日の仮想マシンにOrac …

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

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


カテゴリー