動作検証で使っていたデータベース(PostgreSQL)のテーブルを本番公開する際に、溜まったゴミデータを削除し、合わせてシーケンスもリセットする機会があったので、その時使ったSQL文を備忘録として残しておく。

TRUNCATE TABLE table_name RESTART IDENTITY;

table_nameは適宜変更する必要があるが、上記のSQL文を実行するだけで一発でデータとシーケンスをリセットすることができた。

少し解説しておこう。

上記の例ではRESTART IDENTITYを付ける事でシーケンスもリセットしているが、以下のようにする事でシーケンスはそのままに、データのみを削除することができる。

TRUNCATE TABLE table_name;

また、DELETE文でも同様にデータの削除をおこなうことができるが、DELETE文はWHERE句で削除対象を選択できるのに対し、TRUNCATE TABLE文では全てのデータが削除対象となる。

全てのデータを削除する場合は、TRUNCATE TABLE文の方が処理速度が早い。