Allied ArchitectsAllied ArchitectsEngineer Blog

TRUNCATEとDELETEの違い

2013/11/19 SQL

初めまして、香取です。
今年新卒で入社して、ソリューション案件と社内システムの開発をやらせて頂いています。

データを削除するときのTRUNCATEとDELETEの違いについて書こうと思います。

リリース前のテストデータを削除する場合などでテーブルデータを全て削除したい時があります。
あるテーブルの全てのデータを削除する場合に以下の方法があると思います。

TRUNCATE文

DELETE文

■TRUNCATE

■DELETE

DELETE文ではデータを一つ一つ削除するのに対しTRUNCATE文では

を行い、再度同じテーブルを作成するのでTRANCATEの方が高速です。
しかし、ログの取得やインデックス処理を行わないためデータを復元することが出来ません。

TRUNCATEだとAUTO_INCREMENTの値も削除されるが、DELETEだと保持されます。

■AUTO_INCREMENT
AUTO_INCREMENTだけを初期化したいのであれば、
以下のようにします。

リリース前のテストデータを削除するだけなら得られる結果に大差はないように感じますが
TRUNCATEとDELETEではこれだけ違いがあるようです。

katori.yusuke
  • katori.yusuke
  • かけだしエンジニア
  • 社内システムを開発したり、ソリューション案件をやらせて頂いてます。 学んだことを自分の言葉で発信していこうと思います。

RELATION ENTRY

Laravelを触ってみた(Advent Calendar 12日目)

Laravelを触ってみた(Advent...

2014/12/12 PHP

アライドアーキテクツAdvent Calendar12日目の記事になります。 12日目担当の香取です。 かなりお久しぶりになってしまいました。。。 「Laravelいいよ」って最近よく聞くので僕も触ってみました。 動作環境 Mac(OS X Yosemite 10.10) php 5.5 ...

続きを読む

MAMPにFuelPHPをインストールしてみた

MAMPにFuelPHPをインストールし...

2014/02/20 PHP

お久しぶりです。香取です。 社内でアニメ部が出来たので興味本位で入ってみました。 好きなアニメはソードアートオンラインです。 今期は「いなり、こんこん、恋いろは。」を見ています。 よろしくお願いします。 本題に入ります。 アライドではcurelyという自社のフレームワ...

続きを読む

katori.yusukeの記事一覧へ

ページTOPへ