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

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

関連記事

C# OracleDbAccessを使用して、SQL実行時にORA-00911 文字が無効です のエラー

表題のとおり、C#でOracleDbAccessを使用して、SQLを実行させる時に発生しました。 ネットで探すと、 全角スペースが原因 とか出てきたので、SQL内のスペースを全て半角スペースに置き換え …

ORACLEでORA-01861: リテラルが書式文字列と一致しません

ORA-01861: リテラルが書式文字列と一致しません このエラー、ぶっちゃけ、意味が分からないところでもある。 日付の指定時に発生してて、原因が判明するまでに結構回り道をしました。 ネットで検索し …

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

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

[ORACLE]Oracle 11g XEの文字コードの変更

Oracle 11g XE を普通にインストールするとUFT-8になりますが、場合に寄っちゃSJISで設定しなきゃいけないときもあるので、その手順。 SJISのdumpを渡される 以前、疑問に思ったの …

Oracle Database Bronzeの勉強を始めました。

業務でOracleを使ってます。 DBへの接続と簡単なSQLの確認ぐらいだったら、SQLDeveloperとかのツールを使わずにSQLPlusだけで済ませちゃう人も多いのかな? あとは、SQLのバッチ …


カテゴリー