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]ORA-12514:TNS 指定された接続識別子を解決できませんでした のエラー対処法

ORA-12514 ORA-12514: TNS:listener does not currently know of service requested in connect descriptor …

ORACLEで他のスキーマでSQLを実行した時に、権限不足で「ORA-01031: 権限が不足しています。」のエラーになる

A5Mk2 http://www.wind.sannet.ne.jp/m_matsu/developer/a5m2/ 普段、SQL関連は、A5Mk2っていうソフトを使用しています。 今回のエラーは、自 …

[ORACLE]SQLのIN句にパラメータを適用する方法

カンマ区切りの文字列を取得した理由 こないだの続きです。 日本の中心付近で仕様変更と闘うSE日記[C#]リストをカンマ区切りの文字列で出力するhttp://ht-jp.net/blog/pc/c/c- …

ORACLEでCASE文を使用した時にORA-00932のエラーが出る

割と悩んだ・・・ 原因は、CASE文で使用している項目のデータ型が異なるのが原因みたいだけど、正直、ぴんと来てない現実w select case name when ‘A’ then ‘あ’ when …

[ORACLE]IMPコマンドで、複数テーブルをインポートする

OracleでIMPコマンドでdumpファイルをインポートする時に、特定のテーブルだけインポートしたい時ってある。 後は、複数のテーブルを纏めてインポートする方法を説明します。 Oracleを使ってる …


カテゴリー